2014-03-03 55 views
1


我有一個肥皂服務與很多電話。
創建一個SOAPClient的大部分

$client = new SoapClient(null, $options); 
$result1 = $client->service($valeurs1); 
$result2 = $client->service($valeurs2); 
... 
$resultn = $client->service($valeurs3); 

我的問題發生,如果我超過了一定數量的電話,我落在超時。
我可以增加max_execution_time,但我不是這個解決方案的粉絲。

如果我把一切都放在一個電話,沒有通過任何(數據太多)

$client = new SoapClient(null, $options); 
$result = $client->service($valeurs1 + $valeurs2 + .... + $valeursn); 

有沒有辦法阻止我的服務肥皂在我的PHP腳本的執行重新建立一個新的一個電話?

$client1 = new SoapClient(null, $options); 
$result1 = $client1->service($valeurs1); 
// stop connection soap 
$client2 = new SoapClient(null, $options); 
$result2 = $client2->service($valeurs2); 
// stop connection soap 
... 
$clientn = new SoapClient(null, $options); 
$resultn = $clientn->service($valeursn); 
// stop connection soap 

我的PHP版本是5.3
我不能用 「KEEP_ALIVE」 這就出現了5.4

如果你有一個想法,那將是巨大的! :)

(對不起,我的英語:translate.google :))

+0

你是什麼意思「停止服務」?取消/停止等待先前的呼叫?或者只是釋放/釋放連接使用的資源?由於SOAP使用HTTP進行傳輸,因此我不希望連接在調用之間打開。 – IMSoP

+0

謝謝你的評論。 我希望每個服務'$ client-> Service(..)'結束。 目前,如果我也打電話,我會陷入由'max_execution_time'定義的超時,並有一個或多個'新的SoapClient'。 因此,我得出結論,我在一次執行。 爲了避免這種情況,我希望有許多不同的SOAP實現,即服務調用($ client-> Service(..))。 我不知道這是否可能... 我希望我已經更清楚了。 – doydoy44

+0

'max_execution_time'是你的PHP腳本執行的時間,不像SOAP調用那樣的細節。事實上,等待SOAP服務響應的時間不會被計算在內,因爲PHP在等待時有效地「睡着」。 – IMSoP

回答

1

我會做一回,收我的問題,所有的更好,如果它可以提供給別人。

已經再次感謝@IMSoP回覆了我並有推介。

我的開發原理更新了很多元素(在一個真實的例子中,它的範圍可以從1到12000)。 我已經打電話給每個更新,或者調用webservice的時間更多的處理時間,我主要通過PHP的實際執行時間(max_execution_time)。

因此,我採取了不同的原則,我發送一個文件來更新我的元素,時間更好。 :) 這是一個SOAP文件的例子,有興趣的人可以參考一下。 :)

$url_base = 'http://www.exampletoto.tata/'; 

// SOAP Client Options 
$options = array(); 
$options['location'] = $url_base. 'webservice/soap'; 
$options['uri'] = $url_base ; 
$options['encoding'] = 'ISO-8859-15'; 
$options['soap_version'] = SOAP_1_2; 


$nom_fic = 'file_name.csv'; 

$handle = fopen('C:\\TMP\\' . $nom_fic, "rb"); 
$contents = fread($handle, filesize('C:\\TMP\\' . $nom_fic)); 
fclose($handle); 

$info = array('nom_fic' => $nom_fic, 
       'taille_fic' => filesize('C:\\TMP\\' . $nom_fic)); 

$client = new SoapClient(null, $options); 
$result = $client->updateService($info, $contents);