我在PHP中使用CURL有一个奇怪的问题。问题是,我正在通过返回JSON的API与本地数据库进行通信。我正在使用CURL来完成它,而且我使用的确切方式是,首先获取所有类别,然后在foreach中,为每个类别再次调用CURL以获取其中的产品。我们正在将网站移动到新的服务器上,这个东西突然停止工作,我不明白为什么。
所以,一切正常,产品正在被正确取出,直到第4类(我假设的更大)。在第四类之后,脚本停止运行,并且它不会向屏幕输出任何内容。
我尝试了很多东西,在php.ini中更改了memory_limit,延长了时间限制等等。结果始终相同,输出为
04之后,你应该输出所有其他类别(至少20个)
这是foreach函数中的一段CURL代码。
foreach ($categories as $key => $value) {
echo $key.' ';
$fp = fopen(dirname(__FILE__).'/errorlog.txt', 'w');
$fp = fopen(dirname(__FILE__).'/response'.$key.'.txt', 'w');
$url_get_products = $url.$key;
$ch = curl_init($url_get_products);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_STDERR, $fp);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_NONE);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
$html = curl_exec($ch);
$redirectURL = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL );
curl_close($ch);
echo 'Hello<br>';
我甚至设法将输出转换为文件,当我将其输出到文件但脚本仍然停止运行时,它似乎正常工作。
然后,由于我知道这个问题背后的原因,我甚至将它分离到foreach循环之外,它将我重定向到我服务器上的404页面。
有同样问题的人吗?