【发布时间】:2011-10-24 17:25:57
【问题描述】:
我有一个如下所示的 curl 脚本:
<?php
echo "hello";
$download_file = "http://www.myremotesite.com/api/download.php?autoupdate=1";
$temp_file = tempnam('/tmp','TEMP');
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $download_file);
curl_setopt($ch2, CURLOPT_HEADER, FALSE);
curl_setopt($ch2, CURLOPT_FAILONERROR, FALSE);
curl_setopt($ch2, CURLOPT_BINARYTRANSFER, TRUE);
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch2, CURLOPT_TIMEOUT, 10000);
$file = curl_exec($ch2);
curl_close($ch2);
$fp = fopen($temp_file, 'w');
fwrite($fp, $file);
fclose($fp);
?>
问题是执行后页面上的输出是这样的:
hellohello
根据我的测试,我已将其范围缩小到 $download_file URL。如果我将其更改为 http://www.google.com,则没有问题。
知道是什么导致了这种双重输出吗?对于不同的 URL,在其他情况下也会发生这种情况。我真的认为这是基于服务器的东西,因为同样的设置在其他主机上也能正常工作。
服务器信息 Linux x-mirrors.com 2.6.26-2-openvz-amd64 #1 SMP 2011 年 1 月 25 日星期二 06:04:33 UTC x86_64 PHP 版本 5.2.6-1+lenny10 启用快速 CGI
【问题讨论】:
-
我觉得我们在这里缺少代码。
$ch1在哪里? -
该脚本中的任何内容都不会导致它运行两次,除非它被请求两次。
-
@ceejayoz 当我看到问题是否可以缩小到在一个脚本中运行的两个 CURL 请求时,它就在那里......你只知道理论测试。 $ch2 是在我弄清楚是什么导致它打印 hello 两次时剩下的。嘿,马克,我同意。尽管如此....
-
你是如何执行脚本的?
-
嘿 Phill,目前,上面的这个脚本是我在浏览器中运行的 test.php 的代码。