0

私はApache phpサーバーでxamppを使用しています

リクエストAをサーバーに送信し、ビジー状態に保ちます。次に、サーバーが実行を終了する前に、別の即時要求 B を送信します。ただし、サーバーは、A によって要求された前の実行が終了するまで B に応答せず、クライアント側の B を待機させます。そのため、サーバーがクライアントからのリクエストを自動的にマルチスレッド化しないことを期待しています。私の質問は

  1. それですか

    クライアントは、次のリクエストを送信する前に前のリクエストのレスポンスを受信することを意図していますか? ajaxを同期に設定しようとしましたが、まだ機能しません

    また

    PHP のマルチスレッド機能を使用して対処できます

  2. 方法があれば、リクエスト間でリソースを共有できますか? req Aが$_SESSIONに何らかの値を入れ、req Bがそれを読みたいとしましょう

4

1 に答える 1

1

特定の PHP プロセスがマルチスレッド化されているという考えと、Web サーバー自体がマルチスレッド化されているという考えを混同しないようにしてください。PHP は、PHP コード内からのマルチスレッドを実際にはサポートしていません。ただし、サーバーはマルチスレッドであり、複数の PHP リクエストを同時に処理できます。

リクエスト「A」を送信すると、ウェブサーバーは新しいスレッドでそのリクエストの処理を開始します。リクエスト「B」が来ると、サーバーはそれを処理するために別の新しいスレッドを開始します。「A」が終了する前に「B」が開始すると、両方が同時に実行されますが、それらを同期させる方法は実際にはありません。

「B」を実行する前に「A」を終了する必要がある場合は、「A」が完了したことをクライアントが確認するまで待機させてから、リクエスト「B」を送信する必要があります。これを行う通常の方法は、「A」リクエストの「成功」コードをリクエスト「B」に送信することです。

「A」によって設定されたセッションから「B」に何かを読み取らせたい場合は、「B」を実行する前に「A」がクライアントで終了していることを確認する必要があります。

于 2012-07-15T02:14:56.397 に答える