0

私はphpで書かれた大きなスクリプトを持っています。これはprestashopのインストールで多くの情報をインポートする必要があり、Webサービスを使用しています。このスクリプトは「セクション」で書かれています。次にメーカーなど、メインスクリプトで呼び出される関数は約 7 ~ 10 あります。基本的に、このスクリプトは約 1 時間実行し、最後の関数に到達してから関数から次の関数に移動し、いくつかの値を返し、次の夜まで停止する必要があると想定しています。

それがより良いかどうかを理解したい:

1)新しい関数に入るたびに30分の時間制限を課します(これによりタイムアウトが防止されます)

2) 一連のページを作成し、それぞれに 1 つの関数呼び出し (そしてもちろん制限時間) を指定します。

または他のアイデア...私はしたい:関数が呼び出されたかどうかを知る(おそらくグローバル変数を使用して?)サーバーが関数を順番に実行することを確認する(ページチェーン)...

それ以外の場合は、質問を更新します。

編集: スクリプトは、ページを呼び出す別のサーバーによって実行されます。他のサーバーは私には「知られていない」ため、このページが呼び出されていることしかわかりません (ページに移動して関数を呼び出すこともできます)。私はそれを制御できません。

4

2 に答える 2

1

実行時間の長いスクリプトについては、おそらく cronjob を使用してコマンドラインから実行します。外部からトリガーされた場合は、変数の入力パラメーターとともに、実行する必要があることを示す新しい行を挿入するジョブキューを (データベースなどに) 作成します。次に、バックグラウンド ジョブが実行されます (たとえば、5 分ごとに、キューに新しいジョブがあるかどうかを確認します)。そうでない場合は、終了してください。ある場合は、作業を開始したことを示し、処理を開始します。完了したら、完了したことを示します。

しかし、1時間の作業は非常に長い時間です。それを最適化するためにできることはありませんか?

于 2013-02-21T11:49:52.270 に答える
0

を使用して、スクリプトの実行時間制限を必要なだけ増やすことができます。

set_time_limit(seconds);

また、長時間実行されるスクリプトの場合は、より多くのメモリが必要です。次を使用してメモリ制限を増やすことができます。

ini_set('memory_limit','20M');

もう 1 つ確認しなければならないことは、専用サーバーでスクリプトを実行していることです。共有サーバーを使用している場合、サーバーは長時間実行されるスクリプトを自動的に強制終了するためです。

于 2013-04-13T11:00:35.430 に答える