2011-01-09 6 views
1

私は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; 
} 

} 
?> 

答えて

0

まあ、PHPでのSOAPは少し問題があります。

質問について:はい、SOAPは同時接続を受け入れます。あなたは「記憶不足」を信じています。大きな問題はHTTPレスポンス/秒あたりだと私は信じています。

ここにあなたのApacheエラーログを置くことができますか?あなたの環境でPHPとApacheを一緒に使用していると仮定します。

とにかく、私のアドバイスは:可能であればRESTを使ってください!

+0

ÉlioCosta E Silva:ログを確認しましたが、メモリに問題はありません。実行時間はかなり低く設定されていました。現在、すべてのクエリを実行して出力するので、各クエリを実行するときにどのように出力することができますか。 – Dov

+0

PHPはスレッドをサポートしていません。うーん、キューと一緒に仕事をするだろうね!実行時間の問題については、唯一の方法はset_time_limit()でより高い時間を設定することです – hlegius

-1

はそれがタイムアウトの問題だった

を解決しました。

関連する問題