PHP script just stops even with set_time_limit (0)

I examined how 10 other posts with people who seem to have the same problem as me, most suggest putting set_time_limit(0);. But even with this it does not matter which script I run, always after 9-10 minutes it just stops.

I have tried so many combinations of three variables below, by setting them in -1, 0, 9999999; just always stops. It was not so long ago, I had the same script that was run at night. And only once I had a problem with any script.

Im 100% sure that his stop will end and she will not stop due to an error. Since any of my scripts now stops at the same runtime of the application.

Extremely upset, any help would be greatly appreciated.

In php.ini:

max_input_time = -1
max_execution_time = 0
set_time_limit = 0

Other 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";
?>

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. Therefore, I doubt that all this is related to the code in my script. Therefore, I will add that my web server Im running scripts located on Bluehost .

+4
source share
4 answers

The answer is the restriction that bluehost has set for my account. This is the answer 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
...
+7
source

flush PHP, - , :)

+1

.

withslashes(), , , (aka: escape) . MySQLi, ? mysqli_real_escape_string(), MySQLi?

, mysqli_free_result(), " , ". - , - , .

sleep() ` second, , .

, PHP, , MySQL script 1 , .

insertsentence(), :

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 ('$sentence', '$user', '$id', '$lang');"
                    ;

        // Escape the query.
        $insertqwry = mysqli_real_escape_string($DBConnect, $insertqwry);

        $QueryResult = mysqli_query($DBConnect, $insertqwry) ;

        // Free the result set.
        mysqli_free_result($QueryResult);

        mysqli_close($DBConnect);

        // Sleep for 1 second.
        sleep(1);

        return TRUE;
    }
}

mysqli_stmt_bind_param(), MySQLi? mysqli_real_escape_string(), .

, insertsentence(), mysqli_stmt_bind_param():

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 (?, ?, ?, ?);"
                    ;

        // Bind the values to the statement.
        mysqli_stmt_bind_param($insertqwry, 'ssis', $sentence, $user, $id, $lang);

        $QueryResult = mysqli_query($DBConnect, $insertqwry) ;

        // Free the result set.
        mysqli_free_result($QueryResult);

        mysqli_close($DBConnect);

        // Sleep for 1 second.
        sleep(1);

        return TRUE;
    }
}

Please note 'ssds'in mysqli_stmt_bind_param(). Each letter defines the types of your 4 meanings. So in this case it is row ( sentence), row ( user), integer ( id), row ( language), which is my best guess based on the data you give me.

+1
source

It looks like your script is server limited. I think you can change this in php.ini.

+1
source

Source: https://habr.com/ru/post/1540175/


All Articles