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 に答える