2017-03-07 91 views
1

沒有人知道如何從失敗間歇性停止simPRO PHP Tivoka庫,simPRO Tivoka客戶端間歇性地失敗

我問simPRO的支持和他們說,他們無法複製的問題。 我認爲這可能與某個set_time_limit()有關,它在一個庫中的某處被調用,但是我無法找到它。

進出口運行在PHP

<?php 
    set_time_limit(0); 
    //simPRO Settings 

     $companyID = 0; 
     use SimPro\Api\Client as SimProClient; 
     use Eher\OAuth\Consumer as OAuthConsumer; 
     use \Monolog\Logger; 
    { 
     //if (PHP_SAPI != 'cli') die("This example must be run from the command line"); 

     include ("../../simpro_api_examples/vendor/autoload.php"); 

     define("SERVER", '**************'); 
     define("CONSUMER_KEY", '**************'); 
     define("CONSUMER_SECRET", '***************'); 

     $logger = new Logger('api-client'); 
     $logger->pushHandler(new \Monolog\Handler\StreamHandler('php://stderr'), Logger::INFO); 
     $simPROClient = new SimProClient(SERVER , new OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET), null); 
     $simPROClient->setLogger($logger); 
    } 
    ?> 

下面當我在執行檢索使用

<?php 
    $jobIDs = array(1,2,3,4,5,6,7,8,9,...,500); 
    foreach($jobIDs as $current Job) 
    { 
     $jobDetails = $simPROClient -> JobRetrieve(0/*this is the company id as per their doccumentation at http://api.simpro.co/*,$currentJob); 
    } 
?> 

多個作業在某一點(但絕不相同品脫),它返回以下

致命錯誤:未捕獲的Tivoka ​​\ Exception \ ConnectionException:Connec重刑 爲 「https://integrated-za.simprosuite.com/api/」 未能在C:\深淵的Web服務器 \ htdocs中\ simpro_api_examples \供應商\ tivoka ​​\ tivoka ​​\ LIB \ Tivoka ​​\客戶\ Connection.php:114 堆棧跟蹤:#0 C:\深淵的Web服務器 \ txtoka \ Client \ Connection-> send(Object(Tivoka ​​\ Client \ Request))#1 C:\ Abyss Web Server \ htdocs \ ICG \ CustomerReports \ CustomerReport.php(1625): SimPro \阿比\客戶端 - > __呼叫( 'JobRetrieve',陣列)#2 {主}拋出 C:\深淵的Web服務器 \ htdocs中\ simpro_api_examples \廠商\ tivoka \ tivoka ​​\ lib \ Tivoka ​​\ Client \ Connection.php on line 114

如果我在$jobIDs數組中使用較少的作業ID執行命令,則腳本執行時不會失敗。

我已經調整了我的php.ini允許無限制的腳本執行和輸入時間

回答

0

的Simpro PHP庫使用的是舊版有超時硬編碼爲10秒tivoka RPC客戶端的,因爲SimproAPI很慢,很容易超時,幾乎沒有任何信息。我假設這是你的問題。

查看版本3.1(that Simpro uses)設置爲here的超時時間。

就我個人而言,我正在使用Guzzle對Simpro API執行OAuth 1.0請求。這是一個更好的客戶。

緩存一些本地檢索的數據也是一個好主意,因爲Simpro API非常慢。

+0

感謝@Hippie這種反應,我實際上是通過在tivoka庫中的每一個文件去和改變,以適應我的需要超時,這似乎已經完成了招對我來說, 我一定會檢查出雖然在未來可能會激怒 –