4

ユーザーが私の Web サイトにサインアップした後、ユーザーをブロックしていないメソッドで SOAP 要求を送信する必要があります。SOAP サーバーの実行速度が遅い場合、エンド ユーザーが待機する必要はありません。SOAP サーバーからの応答を待たずに、要求を送信してメインの PHP アプリケーションを実行し続ける方法はありますか? そうでない場合、soap リクエストに最大タイムアウトを設定し、リクエストが最大タイムアウトより大きい場合に機能を処理する方法はありますか?

編集:理想的には、リクエストの最大タイムアウトでこれを処理したいと思います。私は次のものを持っています:

//ini_set('default_socket_timeout', 1);
      $streamOptions = array(
              'http'=>array(
                'timeout'=>0.01
            )
      );

      $streamContext = stream_context_create($streamOptions);

      $wsdl   = 'file://' . dirname(__FILE__) . '/Service.wsdl';

        try{
          if ( file_get_contents( $wsdl ) ) {

              $this->_soapClient = new SoapClient($wsdl,
                  array(
                      'soap_version' => SOAP_1_2,
                      'trace' => true,
                      'stream_context' => $streamContext
                  )
              );
              $auth = array('UserName' => $this->_username, 'Password' => $this->_password);
              $header = new SoapHeader(self::WEB_SERVICE_URL, "WSUser", $auth);
              $this->_soapClient->__setSoapHeaders(array($header));

          }//if
      }
      catch(Exception $e){
        echo "we couldnt connect". $e;
      }
$this->_soapClient->GetUser();

タイムアウトを 0.01 に設定して、接続を強制的にタイムアウトさせようとしましたが、リクエストはまだ発生しているようです。ここで何が間違っていますか?

4

2 に答える 2