SOAP接続がすでに作成されている場合は、どのようにして再利用するのが最も簡単な方法ですか?すでに作成されている場合は、PHP SOAP接続を再利用しますか?
多くの場合、Soap接続機能はPHPページの読み込みを複数回実行できるため、作成した場合は再作成する必要はありません。再利用するだけで済みます。
(時には、それが必要ないので、すべてのPHPページの冒頭でそれを呼び出すのに時間が掛からないため、実行されていないこともあります。
私はこの問題の他の解決策があることを知っていますが(私はそれをGoogleにすると)、私はそれらを理解することはできませんでした。私はたくさんのことを試みたが、彼らは私のために働かなかった。私はセッションにSOAPオブジェクトを格納しようとしても、読み込まれた次のPHPページが(以前のPHPの負荷から)SOAP接続を再利用できるようになりましたが、それはより効きませんでした。
最良の解決策は、ブラウザセッションで読み込まれるすべてのPHPページの接続が記憶されていることです。次にベストな解決策は、現在のPHPページの読み込みのために記憶されていることです。ここで
は私のコードは次のとおりです。
protected static function Economic_API() {
static $client;
$settingsOld = Settings::GetOld();
try {
$client = new SoapClient("https://api.e-conomic.com/secure/api1/EconomicWebservice.asmx?WSDL", array("trace" => 1, "exceptions" => 1));
$client->ConnectWithToken(array(
'token' => $settingsOld->economic_token_secret,
'appToken' => $settingsOld->economic_token_app
));
}
.
.
.
更新されたコード:
class EcoAPI {
static $client;
static public function getClient() {
if (empty(self::$client)) {
self::initClient();
}
return self::$client;
}
static private function initClient() {
$settingsOld = Settings::GetOld();
self::$client = new SoapClient("https://api.e-conomic.com/secure/api1/EconomicWebservice.asmx?WSDL", array("trace" => 1, "exceptions" => 1));
self::$client->ConnectWithToken(array('token' => $settingsOld->economic_token_secret, 'appToken' => $settingsOld->economic_token_app));
}
}
そしてによってそれを呼び出す:おそらく、あなたの代わりに、関数のクラスを使用して試みることができる
$result = EcoAPI::getClient()->Account_FindByNumber(array('number' => intval($accountID)));
初期化を維持します。それは、次の石鹸クライアント呼び出しで石鹸接続を再使用していません。どうして?上記のコードを更新しました。 –
私は静的関数を作ることでそれを修正しました:-) –