Php 卷曲请求不完整,可能超时,但不确定

Php 卷曲请求不完整,可能超时,但不确定,php,curl,timeout,cron,Php,Curl,Timeout,Cron,我目前正在通过一个php脚本使用CURL,该脚本作为每日cron运行,以csv格式从站点的管理区域导出产品数据 导出数据的正常方式是在浏览器中转到导出页面,设置配置,然后单击“导出数据”按钮。但是,由于我正在导出的产品数量非常多,并且需要5-10分钟才能导出数据,因此我决定每天通过cron使用php的curl函数来模拟这一点 以前,它工作得很好,但最近我将商店中的产品数量增加了500+,脚本无法返回导出的数据。通过点击浏览器中的“导出”按钮进行手动测试,可以正确返回数据。因此,在浏览器中手动运行

我目前正在通过一个php脚本使用CURL,该脚本作为每日cron运行,以csv格式从站点的管理区域导出产品数据

导出数据的正常方式是在浏览器中转到导出页面,设置配置,然后单击“导出数据”按钮。但是,由于我正在导出的产品数量非常多,并且需要5-10分钟才能导出数据,因此我决定每天通过cron使用php的curl函数来模拟这一点

以前,它工作得很好,但最近我将商店中的产品数量增加了500+,脚本无法返回导出的数据。通过点击浏览器中的“导出”按钮进行手动测试,可以正确返回数据。因此,在浏览器中手动运行导出不会出现“超时”问题

我已经测试过了,通过删除/减少产品的数量(从而减少所需的时间),当从cron运行时,php curl脚本再次正常工作

所以我怀疑这与超时问题有关,特别是php中的curl函数

我已将CURLOPT_TIMEOUT和CURLOPT_CONNECTTIMEOUT分别设置为“0”以进行尝试。 在php curl脚本中,我还设置了“set_time_limit(3000)”。但它仍然不起作用,请求将超时,脚本无法返回完整的csv数据集

如果您能帮助我解决/理解此问题,我们将不胜感激

已编辑:添加了curl脚本调用导出函数的部分代码

$interface = new StoreInterface(); 
echo "Start exporting at " .  date('l jS \of F Y h:i:s A') . "\n";
set_time_limit(3000);
$result_html = $interface->exportProducts();
//parse $result_html to only retain the csv format
preg_match('/<pre>(.*)<\/pre>/s',$result_html[0],$output);
if(strlen($output[1])<10) {   //debugging for now
echo "Export did not happen correctly. Quit\n";
    die('Export unsuccessful');
}
file_put_contents($output_path,$output[1]);
echo "Script completed. Thank you! \n";
$interface=newstoreinterface();
echo“开始导出”。日期('l jS\of F Y h:i:sa')。“\n”;
设置时间限制(3000);
$result_html=$interface->exportProducts();
//解析$result\u html以仅保留csv格式
preg_match('/(.*)/s',$result_html[0],$output);

如果(strlen($output[1])您可以使用以下curl选项将所有curl传输详细信息记录到日志文件中,并检查是否存在任何问题


此外,我认为CURLOPT_TIMEOUT选项不支持为无限超时指定“0”值。您需要在此处指定最大超时值。

脚本超时是什么意思?是否有特定的错误消息?是否只得到部分结果?没有特定的错误消息。是的,只有部分结果。当“导出”时,脚本将csv数据作为临时文件输出到服务器中函数在存储脚本中由curl脚本调用。如果调用成功,它应将临时文件的全部内容返回到curl脚本以进行处理。但在当前情况下,临时文件的内容在中途突然停止,curl脚本将返回,表明数据不完整。是否检查了错误日志?I wiI’我来试试这个方法,看看效果如何。谢谢。
$fp = fopen('./debug/transfer.log');
curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
curl_setopt($curl, CURLOPT_STDERR, $fp);