simPRO Tivoka客户端间歇性地失败

时间:2017-03-07 14:08:47

标签: php

有没有人知道如何阻止simPRO PHP Tivoka库间歇性地失败,

我已经向simPRO寻求支持,他们说他们不能复制这个问题。 我相信这可能与set_time_limit()有关,而<?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中运行以下内容

    <?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);
    }
?>

当我使用

检索多个作业时
$jobIDs

在执行的某个时刻(但从来没有相同的品脱)它返回以下

  

致命错误:未捕获的Tivoka ​​\ Exception \ ConnectionException:Connection   到&#34; https://integrated-za.simprosuite.com/api/&#34;在C:\ Abyss Web中失败了   服务器\ htdocs中\ simpro_api_examples \供应商\ tivoka ​​\ tivoka ​​\ LIB \ Tivoka ​​\客户\ Connection.php:114   堆栈跟踪:#0 C:\ Abyss Web   服务器\ htdocs中\ simpro_api_examples的\ src \ SimPro \阿比\ Client.php(109):   Tivoka ​​\ Client \ Connection-&gt; send(Object(Tivoka ​​\ Client \ Request))#1   C:\ Abyss Web   服务器\ htdocs中\ ICG \ CustomerReports \ CustomerReport.php(1625):   SimPro \ Api \ Client-&gt; __调用(&#39; JobRetrieve&#39;,数组)#2 {main}抛出   C:\ Abyss Web   服务器\ htdocs中\ simpro_api_examples \供应商\ tivoka ​​\ tivoka ​​\ LIB \ Tivoka ​​\客户端\ Connection.php   在第114行

如果我执行<span class="glyphicon glyphicon-pencil" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal"> 数组中作业ID较少的命令,则脚本会毫无失败地执行。

我调整了我的php.ini以允许无限制的脚本执行和输入时间

1 个答案:

答案 0 :(得分:0)

Simpro PHP库使用旧版本的tivoka RPC客户端,其超时硬编码为10秒,并且因为SimproAPI很慢,所以很容易超时,几乎没有信息。我假设这是你的问题。

请参阅版本3.1(that Simpro uses)设置here的超时。

我个人使用Guzzle向Simpro API发出OAuth 1.0请求。这是一个更好的客户。

缓存一些本地检索的数据也是一个好主意,因为Simpro API非常慢。