Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php script just stops even with set_time_limit(0)

Tags:

php

mysql

I have looked at like 10 other posts with people who seem to have the same problem as me in, most suggest putting set_time_limit(0);. But even with that no matter what script I run, always after around 9-10 minutes it just stops.

I have tried so many combinations of the below 3 variables, setting them to -1, 0, 9999999; just always stops. It was not so long ago, I had the exact same script below run over night. And just one day I have this problem with any script.

I’m 100% sure it’s stopping before its finished, and it’s not stopping due to error. Because any of my scripts now stop at the same app run time.

Extremely frustrated, any help will be much appreciated.

In php.ini:

max_input_time = -1
max_execution_time = 0
set_time_limit = 0

Another scripts: (also stops after 10 minutes)

<?php
set_time_limit(0);
ignore_user_abort(true);
function categoryinsert($english, $name, $keywords, $language)
{
    if(!$english)
    {
        echo "no english recieved! in categoryinsert<br />";
        return 0;
    }
    else if(!$name)
    {
        echo "no name recieved! in categoryinsert<br />";
        return 0;
    }
    else if(!$language)
    {
        echo "no language recieved! in categoryinsert<br />";
        return 0;
    }
    $DBConnect = mysqli_connect("localhost", "USER***", "************");
    mysqli_set_charset($DBConnect, "utf8");
    mysqli_select_db($DBConnect, "db***");

    $qwry = "INSERT INTO `categories` (english, name, keywords, language) values ('$english','$name','$keywords','$language');";
            $QueryResult = mysqli_query($DBConnect, $qwry);
            //Or die("<p>Unable to execute the query.[".$qwry."]<p>"
            //. "<p>Error code " . mysqli_errno($DBConnect)
            //. ": " . mysqli_error($DBConnect)) . "</p>"; 

            mysqli_close($DBConnect);
}
function checkfor($english, $lang)
{
    $DBConnect = mysqli_connect("localhost", "USER***", "************");
    mysqli_set_charset($DBConnect, "utf8");
    mysqli_select_db($DBConnect, "db***");

    $qwry = "SELECT * FROM `categories` where english = '$english' and language = '$lang';";
            $QueryResult = mysqli_query($DBConnect, $qwry);

            $Row = mysqli_fetch_row($QueryResult);

            mysqli_close($DBConnect);

            if($Row) return true;
            else return false;
}
function categoryupdate($keywords, $language, $english)
{
if(!$english)
    {
        echo "no english recieved! in categoryupdate<br />";
        return 0;
    }
    else if(!$keywords)
    {
        echo "no keywords recieved! in categoryupdate<br />";
        return 0;
    }
    else if(!$language)
    {
        echo "no language recieved! in categoryupdate<br />";
        return 0;
    }
    $DBConnect = mysqli_connect("localhost", "USER***", "************");
    mysqli_set_charset($DBConnect, "utf8");
    mysqli_select_db($DBConnect, "db***");

    $qwry = "UPDATE `categories` set keywords = '$keywords' where language = '$language' and language = '$language';";
            $QueryResult = mysqli_query($DBConnect, $qwry)
            Or die("<p>Unable to execute the query.[".$qwry."]<p>"
            . "<p>Error code " . mysqli_errno($DBConnect)
            . ": " . mysqli_error($DBConnect)) . "</p>"; 

            mysqli_close($DBConnect);
}
function translatekeywords($keywords, $tolang)
{

    if(!$keywords)
    {
        echo "no keywords recieved! in translatekeywords<br />";
        return 0;
    }
    else if(!$tolang)
    {
        echo "no tolang recieved! in translatekeywords<br />";
        return 0;
    }
    $parts = explode(", ", $keywords);
    $count = 0;
    $out = "";

    while($parts[$count])
    {
        if(($count != 0) and ($result)) $out = $out . ", ";
        $result = translate($parts[$count], 'eng', $tolang);
        if($result) $out = $out . $result;
        $count++;
    }

    return $out;
}
include '../functions.php';

$DBConnect = mysqli_connect("localhost", "USER***", "************");
    mysqli_set_charset($DBConnect, "utf8");
    mysqli_select_db($DBConnect, "db***");


            $qwry = "SELECT english, keywords FROM `categories` where language = 'eng' order by name ASC;";
            $QueryResult = mysqli_query($DBConnect, $qwry)
            Or die("<p>Unable to execute the query.[".$qwry."]<p>"
            . "<p>Error code " . mysqli_errno($DBConnect)
            . ": " . mysqli_error($DBConnect)) . "</p>"; 

            $count = 0;
            $Row = mysqli_fetch_row($QueryResult);

            do
            {
                $categories[$count] = $Row;             
                echo $count.') ['.$categories[$count][0].']['.$categories[$count][1].']<br />';
                $Row = mysqli_fetch_row($QueryResult);
                $count++;
            }while($Row);

            $qwry = "SELECT ISO3 FROM `languages` order by name ASC;";
            $QueryResult = mysqli_query($DBConnect, $qwry)
            Or die("<p>Unable to execute the query.[".$qwry."]<p>"
            . "<p>Error code " . mysqli_errno($DBConnect)
            . ": " . mysqli_error($DBConnect)) . "</p>"; 

            $count = 0;
            $Row = mysqli_fetch_row($QueryResult);

            do
            {
                $languages[$count] = $Row[0];
                $Row = mysqli_fetch_row($QueryResult);
                echo '['.$languages[$count].']<br />';
                $count++;
            }while($Row);

            $lcount = 0;
            do
            {
                if($languages[$lcount] != 'eng')
                {
                    $ccount = 0;
                    do
                    {
                        if(!checkfor($categories[$ccount][0], $languages[$lcount]))
                        {
                            $name = translate($categories[$ccount][0], 'eng', $languages[$lcount]);
                            if($categories[$ccount][1]) $keywords = translatekeywords($categories[$ccount][1],$languages[$lcount]);
                            categoryinsert($categories[$ccount][0], $name, $keywords, $languages[$lcount]);
                        }
                        $ccount++;
                    }while($categories[$ccount]);
                }

            $lcount++;
            }while($languages[$lcount]);

mysqli_close($DBConnect);
echo "FINISHED! [$lcount] languages proccessed";
?>

The script:

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head>
<body>
<?php 
set_time_limit(0);
ignore_user_abort(true);
include 'functions.php'; 

function insertsentence($sentence, $lang, $id, $user)
{
    if(($lang == 'epo') and (strlen($sentence) < 255) )
    {
        $DBConnect = mysqli_connect("localhost", "xxxxx_userx", "xxxxxxx!");
        mysqli_set_charset($DBConnect, "utf8");
        mysqli_select_db($DBConnect, "xxxxx_main");

            $insertqwry = "INSERT INTO `sentences` (sentence, user, id, language) VALUES ('".withslashes($sentence)."', '".withslashes($user)."', '".withslashes($id)."', '".withslashes($lang)."');";

        $QueryResult = mysqli_query($DBConnect, $insertqwry) ;
        //Or die("<p>Unable to execute the query.[".$insertqwry."]<p>"
        //. "<p>Error code " . mysqli_errno($DBConnect)
        //. ": " . mysqli_error($DBConnect)) . "</p>"; 

        mysqli_close($DBConnect);
return 1;
    }

}

$myFile = "sentences_detailed.csv"; 
$fh = fopen($myFile, 'r');
$s = fread($fh, 3);
if ($s != pack('CCC',0xef, 0xbb, 0xbf)) {
    // bom not found, rewind file
    fseek($fh, 0, SEEK_SET);
}

$count = 0;
ob_start();
do
{

    $line = preg_replace('/^\p{Z}+|\p{Z}+$/u', '', withslashes(trim(fgets($fh))));
    $parts = explode("  ", $line);
        $id = $parts[0];
        $lang = $parts[1];
        $sentence = withslashes($parts[2]);
        $user = withslashes($parts[3]);
        $note = "";


        if ((!$line) or ($line == "") or ($line == "!"))
        {
            echo ($count-1)." entries were processed<br />";
            echo "done<br />";
            exit();
        }



                if ($sentence != "!" )
                {
                    if (insertsentence($sentence, $lang, $id, $user))
                    echo "!";
                }

        ob_flush();
        flush();

    $count++;

    echo ".";

}while($line);

fclose($fh);
mysqli_close($DBConnect);

echo ($count-1)." entries were processed<br />";

?>
</body>
</html>

EDIT: No matter what script I run, or how simple it always stops after about 10 minutes. So I doubt it’s anything to do with the code in my script. So I'll add that my web server I’m running scripts on, is on Bluehost.

like image 235
user1397417 Avatar asked Dec 25 '22 09:12

user1397417


1 Answers

The answer is its a limitation bluehost has set to my account. Heres the response he gave me:

...
The Dedicated IP (+$3.33 per month) will increase the limits on the account.


    The following it the limits on how the server will kill processes with and without the Dedicated IP on the account: 

                                    With a Dedicated IP         Without Dedicated IP
Apache/Web (HTML/PHP/Downloads)     12 hours                    10 minutes
...
like image 90
user1397417 Avatar answered Jan 07 '23 18:01

user1397417