2011-10-27 14 views
0

CurlをPHPで使用する際に、どのように同時スレッドを制限できますか?PHP:Curlの同時スレッドを制限する

$max_threads = 30; 
if(shell_exec('ps -ef | grep "curl" | wc -l') < $max_threads)) { 
    shell_exec('curl http://www.google.com'); 
} 

if文は、「カール」に対応したマシン上の現在の作業スレッドの数をチェックする場合:私が使用してどのような

+0

"同時スレッド"とはどういう意味ですか?あなたは例を投稿できますか? – rid

+0

これは、Curlを同時に使用できるユーザーの数を意味します。私はHTTP経由で外部APIにアクセスしており、同時にアクセスするために18を超える同時スレッドを開くことはできません。 –

+0

これらのスクリプトはどのように動作しますか?あなたは、ブラウザから送られたリクエストごとにカールリクエストをしますか、またはcronスクリプトを持っていますか? – rid

答えて

2

使用できる組み込み機能はありませんが、現在アクティブなセッションの数を保存できます。カールセッションを開くと、カウントが増加し、応答を受信して​​セッションを閉じると、カウントが減少します。

たとえば、ファイルにカウントを格納することができます。ファイルを開くだけで、カウントを読んだり、増やしたり、減らしたりしてから、再度ファイルに保存してください。

1

は、このようなshell_exec機能です。

しかし、これはPHP APIではなく、shell_exec関数でcurlを起動することを意味します。

1

curl_multi_ *関数を使用すると、複数のカールハンドルを同時に処理し、18個のセッションをセットアップして束で実行することができます。タスクに依存します。

read more

+0

非常に興味深い、ありがとう。 –

+0

@Frank Vilea、 'curl_multi_ *'関数は素晴らしいです。あなたがそれらを使用できる状況にあるなら、是非、先に進んでください。実際には、私が知っているPHPでできる唯一の本当のマルチスレッド操作です。 – rid

関連する問題