私はSOAPの使い方とその基本について理解しています。PHPとSOAPとの単純な接続ですか?
私はクライアントのリソース/接続を作成して、ループでいくつかのクエリを実行しています。私が抱えている問題は、ループの反復回数を増やした場合です。つまり、100から1000まで、メモリ不足となり、内部サーバーエラーが発生します。
どうやってa)複数の同時接続を実行するか、b)接続を作成する、100回反復する、接続を閉じる、接続を作成するなど
"a)"が良いオプションに見えますが、メモリを維持しながら(少なくとも私は開いて、閉鎖接続を想定している)、それを起動して実行する方法についてのヒント。
ありがとうございます!
のindex.php
<?php
// set loops to 0
$loops = 0;
// connection credentials and settings
$location = 'https://theconsole.com/';
$wsdl = $location.'?wsdl';
$username = 'user';
$password = 'pass';
// include the console and client classes
include "class_console.php";
include "class_client.php";
// create a client resource/connection
$client = new Client($location, $wsdl, $username, $password);
while ($loops <= 100)
{
$dostuff;
}
?>
class_console.php
<?php
class Console {
// the connection resource
private $connection = NULL;
/**
* When this object is instantiated a connection will be made to the console
*/
public function __construct($location, $wsdl, $username, $password, $proxyHost = NULL, $proxyPort = NULL) {
if(is_null($proxyHost) || is_null($proxyPort)) $connection = new SoapClient($wsdl, array('login' => $username, 'password' => $password));
else $connection = new SoapClient($wsdl, array('login' => $username, 'password' => $password, 'proxy_host' => $proxyHost, 'proxy_port' => $proxyPort));
$connection->__setLocation($location);
$this->connection = $connection;
return $this->connection;
}
/**
* Will print any type of data to screen, where supported by print_r
*
* @param $var - The data to print to screen
* @return $this->connection - The connection resource
**/
public function screen($var) {
print '<pre>';
print_r($var);
print '</pre>';
return $this->connection;
}
/**
* Returns a server/connection resource
*
* @return $this->connection - The connection resource
*/
public function srv() {
return $this->connection;
}
}
?>
ÉlioCosta E Silva:ログを確認しましたが、メモリに問題はありません。実行時間はかなり低く設定されていました。現在、すべてのクエリを実行して出力するので、各クエリを実行するときにどのように出力することができますか。 – Dov
PHPはスレッドをサポートしていません。うーん、キューと一緒に仕事をするだろうね!実行時間の問題については、唯一の方法はset_time_limit()でより高い時間を設定することです – hlegius