2

25,000 ~ 100,000 のバーコードを生成する機能が必要なクライアント向けの Web サイトを作成しています。コードを生成するソフトウェアのライセンスを取得しましたが、注文を生成するのに約 20 ~ 30 分かかります。60,000 バーコード。

だから私の質問はこれです...

ゼロに設定されたphpで設定された時間制限関数を使用して(時間制限なし)、変数をAjaxでライブラリに渡し、ignore_user_abort関数を使用することは可能でしょうか。このようにして、本質的にこれが起こるでしょう:

顧客がバーコードの数量とタイプを選択し、チェックアウトして支払いゲートウェイが SUCCESSFUL の応答を返した後、時間制限を UNLIMITED に設定する ajax 要求を実行し、ユーザーがブラウザを閉じたり、ページを終了します。このようにして、サーバーは注文を処理し、2 秒か 45 分かかるかは関係ありません。注文が完了すると、クライアントはアカウントを更新でき、注文が表示されます。

これは良いアイデアのように聞こえるか、それとも実行可能な解決策になるかを夢見ているだけですか? 私は何年にもわたって PHP キュー システムをコーディングした経験がないので、絶対に必要でない限り作成す​​る必要はありません。

4

3 に答える 3

3

Gearman ( http://gearman.org/index.php ) のようなものを使用することを検討します。

これもCIアプリとは別のものになります... CIはGearmanを使用してキューを処理します...

于 2012-10-25T10:00:51.177 に答える
1

バックエンドで CLI を使用してみてください。デフォルトでは時間制限がありません.. http://php.net/manual/en/info.configuration.php#ini.max-execution-time

3つのステップで私が意味すること..

まず、ORDER をデータベースに保存します。

2番!!!crontask を毎分実行するように設定し、1 つの注文を受け取って処理します。注文の準備ができたら (30 分後)、データベースをダウンロード リンクで更新するか、応答として返されたものを使用して crontasks を終了します。

三番。注文の準備ができたら、あるページでユーザーに結果を表示します。

于 2012-10-25T10:07:43.560 に答える
1

実行時間の長い 1 つの PHP インスタンスに依存しないでください。特に、何らかの方法でユーザー/ブラウザーに関連付けられている場合。バックエンド システムを Web サーバーの応答などの一時的なプロセスから適切に分離します。

適切なキュー ワーカー システムを作成します。すべての注文をキュー (データベース、フラット ファイルなど) に入れ、ワーカーがキューから注文を 1 つずつ受け取り、処理し、結果を更新します。ワーカーは、cron ジョブ、デーモン プロセス、エンドレス ループの PHP スクリプト (クラッシュした場合にモニターによって再起動される) などです。AMQP、ZeroMQ、または同様のキューイング/メッセージング システムを調べることもできます。

于 2012-10-25T09:56:31.803 に答える