Wie kann ich die SOAP-Verbindung auf einfachste Weise wiederverwenden, wenn sie bereits erstellt wurde?Wiederverwendung der PHP-SOAP-Verbindung, wenn sie bereits erstellt wurde?
Die Soap Connection-Funktion könnte in vielen Fällen multiple Zeiten mit einer PHP-Seite geladen werden, so dass es nicht notwendig ist, die Verbindung neu zu erstellen, wenn es erstellt wurde - es muss nur wiederverwendet werden.
(Und manchmal wird es überhaupt nicht ausgeführt, weil es nicht benötigt wird, es wäre also Zeitverschwendung, es am Anfang aller PHP-Seiten aufzurufen. Die Funktion muss nur dort ausgeführt werden, wo es nötig ist verbinden.)
Ich weiß, dass es andere Lösungen für dieses Problem (wenn ich es google), aber ich habe es nicht geschafft, sie zu verstehen. Ich habe viele Dinge ausprobiert, aber sie haben nicht für mich funktioniert. Ich habe sogar versucht, das SOAP-Objekt in einer Sitzung zu speichern, so dass die nächste PHP-Seite, die geladen wurde, die Soap-Verbindung (aus der vorherigen PHP-Last) wiederverwenden könnte, aber es funktionierte nicht mehr.
Die beste Lösung ist, dass die Verbindung für alle PHP-Seiten in einer Browsersitzung gespeichert wird und die nächstbeste Lösung ist, dass sie für die aktuelle PHP-Seitenladung gespeichert wird.
Hier ist mein Code:
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
));
}
.
.
.
AKTUALISIERT Code:
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));
}
}
Und nennen Sie es nach:
$result = EcoAPI::getClient()->Account_FindByNumber(array('number' => intval($accountID)));
Es wird weiterhin initialisiert. Beim nächsten Aufruf des Soap-Clients wird die Soap-Verbindung nicht erneut verwendet. Warum? Ich habe meinen obigen Code aktualisiert. –
Ich habe es mit statischen Funktionen behoben :-) –