1

看来如果我做类似的事情

$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 仍在下载。

4

2 回答 2

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

于 2008-11-11T02:33:55.060 回答
0

好吧,我有同样的问题。curl 应该是同步的,但是,取决于您如何使用它,它不是同步的。
如果您在 curl、print 或 echo 之后调用,则内容无效。有一个奇怪的延迟。但我会尝试这种方法 -

print_r(curls_getinfo($CR));

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

于 2012-05-29T15:26:02.740 回答