0

PHP ページにリクエストを送信してヘッダーを取得するコードがあります。問題は、そのページで copy() 関数が実行され、cURL がページ全体の読み込み (コピーの終了) を待つか、タイムアウトを 2 ~ 3 秒に設定すると false を返すことです。copy() 関数が仕事を終えるのを待たずにページヘッダーを取得するにはどうすればよいですか?

これまでの私のコードは次のとおりです。

$req='page_with_copy_function_in_it.php';
$ch=curl_init($req);
curl_setopt($ch,CURLOPT_NOBODY,true);
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,2);
$data=curl_exec($ch);
curl_close($ch);
4

2 に答える 2

1

cURL を使用してページのヘッダーにアクセスすると、内部に長時間実行されるタスクがある場合でも、PHP ファイル全体が実行されます。これは、ヘッダー関数によって HTTP ヘッダーがオーバーライドされる可能性があるためです。

電話を切りたくない場合は、関数の代わりにコマンドラインを使用してファイルをコピーすることをお勧めします。Linux システムを使用している場合copy($source, $target)は、代わりに次を実行します。

$source = escapeshellarg($source);
$target = escapeshellarg($target);
exec("cp $source $target &");

シンボルは&バックグラウンドでコマンドを実行します (したがって、コピーに 3 秒かかる場合、コピーはバックグラウンドで実行され、PHP ファイルはハングしません)。

于 2013-04-27T14:11:09.723 に答える