まず、私がやろうとしていることの基本的な考え方を説明したいと思います。
私は、無料の Web ホスティング サービスに何らかの仕事をさせようとしています。1 つの php ページと MySQL db を作成しました。私の PHP ページの背後にある基本的な考え方は、$shutdown の条件を持つ while ループと、コードが実行されているかどうかを追跡する while ループ内のいくつかのカウンターがあることです。
<?php
/*
Connect to database etc. etc
*/
$shutdown = false;
// Main loop
while (!$shutdown)
{
// Check for user shutdown request
$strq = "SELECT * FROM TB_Shutdown;";
$result = mysql_query($strq);
$row = mysql_fetch_array($result);
if ($row[0] == "true")
{
$shutdown = true; // I know this statement is useless but nevermind
break;
}
//Increase counter
$strq = "SELECT * FROM TB_Counter;";
$result = mysql_query($strq);
$row = mysql_fetch_array($result);
if (intval($row[0]) == 60)
{
// Reset counter
$strq = "UPDATE TB_Counter SET value = 0";
$result = mysql_query($strq);
/*
I have some code to do some works at here its not important just curl stuff
*/
else
{
// Increase counter
$strq = "UPDATE TB_Counter SET value = " . (intval($row[0]) + 1);
$result = mysql_query($strq);
}
/*
I have some code to do some works at here its not important just curl stuff
*/
// Sleep
sleep(1);
}
?>
そして、TB_Counter から値を返す check.php があります。
問題は、TB_Counter テーブルを毎秒追跡していることです。しばらくすると止まります。ウェブブラウザ (メイン while php ループ ページを呼び出す) を閉じると、約 2 分後に停止します。5〜7分経ってもブラウザに「接続がリセットされました」というエラーが表示され、ループが停止します。
ループが永遠に続くようにするにはどうすればよいですか?