私はかなり長いメモリ集中ループを持っています。私のサーバーは実行の時間制限を設けているため、またはメモリ不足のため、一度に実行することはできません。どのようにして、本当に長いメモリ集約ループをより小さなチャンクに分割するのですか?
このループを小さな塊に分割したいと考えています。
ループを小さなチャンクに分割し、新しい開始条件でスクリプトをリロードするための場所ヘッダーを設定することを考えました。
MY OLD SCRIPT(擬似コード。私は以下の欠点を承知している)
for($i=0;$i<1000;$i++)
{
//FUNCTION
}
MY NEW SCRIPTしかし
$start=$_GET['start'];
$end=$start+10;
for($i=$start;$i<$end;$i++;)
{
//FUNCTION
}
header("Location:script.php?start=$end");
、私の新しいスクリプトは、数回の反復のために正常に実行され、その後、Iサーバーエラーが発生する「リダイレクトが多すぎます」
方法はありますか?誰かがより良い戦略を提案できますか?
私は共有サーバー上にあるため、メモリ割り当てやスクリプト実行時間を増やすことはできません。
私はPHPソリューションを希望します。
ありがとうございました。
。もっとコードを投稿できますか? – Jack
PHPはガベージコレクションで本当にうんざりです。最近、(新しいGCライブラリを含む)ベースコードの改善や提案がたくさんありますが、私はそれらをすべて手に入れましたが、いくつかのケースでは、PHPがメモリをクリアしません。またはあなたが眠る。与えられた様々な答えを試してみてください。しかし、何も動かなければ、あなたは頭を壁に打つかもしれないことに注意してください。 – Anthony
ループにSQLクエリが含まれていますか? – denil