有没有人知道如何阻止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以允许无限制的脚本执行和输入时间
答案 0 :(得分:0)
Simpro PHP库使用旧版本的tivoka RPC客户端,其超时硬编码为10秒,并且因为SimproAPI很慢,所以很容易超时,几乎没有信息。我假设这是你的问题。
请参阅版本3.1(that Simpro uses)设置here的超时。
我个人使用Guzzle向Simpro API发出OAuth 1.0请求。这是一个更好的客户。
缓存一些本地检索的数据也是一个好主意,因为Simpro API非常慢。