3

ブラウザからphpスクリプトを複数回実行する方法を探しています。シナリオは次のとおりです。

100 MB から 2 GB の一連の大きなファイルから mySQL テーブルを作成しています。平均して、テーブルには約 150,000 のレコードがあります。

PHPスクリプトへのAJAX呼び出しを行うjavascript関数を使用することで、現在そうしています。成功すると、関数はタイムアウトを設定してそれ自体を実行し、AJAX 呼び出しをトリガーして 2 番目の 100 を実行します。

この背後にある私の考えは、関数が再び実行される前に、関数を閉じるための秒を与えることでした。

これはうまく機能していません。関数自体はすべて機能しますが、パフォーマンスに関してはかなり遅いです。

一度に 100 件のレコードを処理しておらず、javascript も PHP も使用していなかったときは、タイムアウトする前に約 15,000 件のレコードをテーブルに入れることができました。現在、同じ数のレコードを実行するのに約 10 分かかります。

私は、継続的に実行されている JavaScript がメモリとパフォーマンスを狂ったように出血させていることを知っており、ブラウザから PHP スクリプトを何度も実行する方法について何かアイデアがあるかどうか疑問に思っていました。Cron は、現時点ではオプションではありません。

4

4 に答える 4

1

その呼び出された (非同期) ワーク/ジョブ キューは、Gearmanを探索する必要があるようです

于 2012-03-22T19:02:36.667 に答える
0

PHPスクリプト自体に関数を複数回繰り返させることはできませんか? 関数が時々失敗したりタイムアウトしたりすることが問題である場合、スクリプト内で例外をキャッチできますか? それとも、外部のマインダーの使用が本当に必要な、避けられない完全に致命的なエラーがありますか?

于 2012-03-22T19:07:09.960 に答える
0

同様の状況に遭遇しました...私の解決策は、ajaxキューを使用することでした。基本的に、一連の ajax 呼び出しを順番に実行するキューにフィードし、前の呼び出しがサーバーから成功として返された後に次の呼び出しを開始します。

タイムアウトを設定すると、サーバーが最後の ajax 呼び出しを完了する前に、次の ajax 呼び出しが行われる状況が発生する可能性があります。これがパフォーマンスの問題の原因である可能性があります。リソースの過剰使用だけのために、JavaScriptのタイムアウトはあまり好きではありません。

あなたが役に立つと思うコードについてはGoogleの「Ajax Queue」、または私はjQueryである私のものを投稿できます。

于 2012-03-22T19:39:10.730 に答える
-1

スクリプトを毎分実行するように cronjob を設定する

于 2012-03-22T19:02:12.867 に答える