申し訳ありませんが、実際にこの質問を何度もしましたが、答えを完全に理解することはできませんでした.
これが私の現在のコードです:
while($resultSet = mysql_fetch_array($SQL)){
$ch = curl_init($resultSet['url'] . $fullcurl); //load the urls and send GET data
curl_setopt($ch, CURLOPT_TIMEOUT, 2); //Only load it for two seconds (Long enough to send the data)
curl_exec($ch); //Execute the cURL
curl_close($ch); //Close it off
} //end while loop
私がここで行っているのは、MySQL データベース ($resultSet['url']) から URL を取得し、そこに追加の変数をいくつか追加し、GET データ ($fullcurl) だけを追加して、ページをリクエストするだけです。これにより、これらのページでスクリプトの実行が開始されます。このスクリプトが実行する必要があるのは、これらのスクリプトを開始することだけです。出力を返す必要はありません。スクリプトを開始するのに十分な長さでページをロードするだけです。
ただし、現在は各 URL (現在 11 個) を 1 つずつ読み込んでいます。それらすべてを同時にロードする必要があります。curl_multi_ を使用する必要があることは理解していますが、cURL 関数がどのように機能するかについてはまったくわかりません。そのため、while ループでcurl_multi_ を使用するようにコードを変更する方法がわかりません。
だから私の質問は:
このコードを変更して、すべての URL を同時にロードするにはどうすればよいですか? コードだけでなく、説明してください。個々の機能が正確に何をするのか知りたいです。while ループは各行を 1 つずつ送信するだけなので、curl_multi_exec は while ループでも機能しますか?
もちろん、cURL 関数に関するリファレンス、ガイド、チュートリアルも同様に役立ちます。できればphp.netからはそれほど多くはありません.構文を教えてくれるのは良い仕事ですが、少し乾いていて説明があまり得意ではありません.
編集:わかりましたzaf、これが現在の私の現在のコードです:
$mh = curl_multi_init(); //set up a cURL multiple execution handle
$SQL = mysql_query("SELECT url FROM urls") or die(mysql_error()); //Query the shell table
while($resultSet = mysql_fetch_array($SQL)){
$ch = curl_init($resultSet['url'] . $fullcurl); //load the urls and send GET data
curl_setopt($ch, CURLOPT_TIMEOUT, 2); //Only load it for two seconds (Long enough to send the data)
curl_multi_add_handle($mh, $ch);
} //No more shells, close the while loop
curl_multi_exec($mh); //Execute the multi execution
curl_multi_close($mh); //Close it when it's finished.