在继续之前如何让php等待卷曲完成?

时间:2008-11-06 00:12:50

标签: php curl

好像我做了像

这样的事情
$file = fopen($filepath, "w");
$CR = curl_init();
curl_setopt($CR, CURLOPT_URL, $source_path);
curl_setopt($CR, CURLOPT_POST, 1);
curl_setopt($CR, CURLOPT_FAILONERROR, true);
curl_setopt($CR, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($CR, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($CR, CURLOPT_FILE, $file);
$result = curl_exec( $CR );
$error = curl_error( $CR );
print filesize($filepath);

我得到的结果与我刚刚运行

的结果不同
print filesize($filepath);

第二次。我的猜测是,当执行filesize()时,curl仍在下载。

2 个答案:

答案 0 :(得分:2)

请注意,filesize()等函数会缓存其结果,尝试在“print filesize(...);”上面添加对clearstatcache()的调用。这是一个例子:

$file = '/tmp/test12345';
file_put_contents($file, 'hello');
echo filesize($file), "\n";
file_put_contents($file, 'hello world, this is a test');
echo filesize($file), "\n";
clearstatcache();
echo filesize($file), "\n";

见www.php.net/clearstatcache

答案 1 :(得分:0)

好吧,我有同样的问题。 curl应该是同步的,但是,根据你使用它的方式,它不是同步的 如果您在卷曲,打印或回声后调用,则内容无效。有一个奇怪的延迟。 但我会尝试这种方法 -

print_r(curls_getinfo($CR));

一步完成所有事情可以解决问题。

相关问题