当 Web 服务返回的数据变大时,我无法处理它。我为此目的使用 NuSOAP PHP 库,当服务返回的数据很小时,一切顺利,但当它变大时,我会遇到内部服务器错误 500。
我所做的只是使用 NuSOAP 来检索数据,这些数据本身将结果解析为一个数组,然后我迭代这个数组以将数据导入本地 DDBB。没有什么花哨。它可以获得的结果越大,结果为 1000 个,因为服务中有一个分页选项参数,该参数将限制为每次调用时的结果....但是在大约 800 条记录之后,我遇到了错误。
我试图增加初始化集中的内存并增加执行时间限制,但没有成功。
我的猜测是问题在于数据的频率与 php 解析数据的频率不同。解决方案?也许缓冲区在这种情况下可以正常工作,但不确定如何在 PHP 中实现这一点。有什么想法吗?
这是代码:
$client = new nusoap_client($WSDL);
do {
$data = $client->call($serviceName, array('GetValuesFrom' => $getValuesFrom,'PW' => $pw, 'StartIndex' => $startIndex, 'Count' => $count), $ns, $ns);
// Check there if there are results at all
if(!$data) {
$message .= 'No results returned by the service<br>';
break;
}
// Script that imports it to the DDBB
require_once('import_into_DDBB.php');
$pulledData = count($data);
$totalProcessed += $pulledData;
$startIndex++;
}
while($count == $pulledData);