1

これは仕事のためのプロジェクトなので、あまり詳細に入ることができませんが、とにかく..

すべての応答を MySQL データベースにプッシュする SOAP クライアントを PHP で作成中です。私のメイン スクリプトは、大量のアイテム セット (現時点では約 4000 ですが、リストはある時点で数十万に達すると予想されます) を取得する最初の SOAP リクエストを作成します。

この 4000 項目のリストが返されたら、各項目の履歴要求を送信する exec("/usr/bin/php path/to/my/historyScript.php &") を使用します。Web サービス API は、最大 30 リクエスト/秒をサポートします。以下は、私が現在行っていることの擬似コードです。

$count = 0;

foreach( $items as $item )
{
    if ( $count == 30 )
    {
      sleep(1); // Sleep for one second before calling the next 30 requests
      $count = 0;
    }

    exec('/usr/bin/php path/to/history/script.php &');
    $count++;
}

私が直面している問題は、プロセスがいつ終了し、開発サーバーがクラッシュし始めているのかがわからないことです。データは増加することが予想されるため、これが私の問題に対する非常に貧弱な解決策であることはわかっています。

このようなタスクに使用することを検討すべきより良いアプローチがあるでしょうか? これはもっと「ハック」だと思います

4

1 に答える 1

0

よくわかりませんが、アプリケーションがクラッシュした理由は、大量のデータ セットを PHP 変数に保持しているためだと思います。これを調べてください。RAM サイズに基づいて、これ (データ サイズ) がシステム クラッシュにつながります。そして私の提案は、サービスへのリクエストの数ではなく、リクエストごとに外部サービスからの着信データを制限しようとすることです。

于 2013-02-01T14:19:11.910 に答える