2012-02-17 5 views
3

このコード:3行のコードを同時に実行できますか?

$ip1 = `/usr/bin/dig $host1`; 
$ip2 = `/usr/bin/dig $host2`; 
$ip3 = `/usr/bin/dig $host3`; 

実行一つずつ。問題は、掘削の応答速度がランダムであることです。それは速くても、10秒以上かかる可能性があります。私の質問は、同じページでこの3行のコードを同時に実行する方法です。

私は3つの異なるページで実行するような他のアプローチを受け入れることを喜んでします。私にはarray_chunk($input_array, 3)があります。 $input_arrayは上記の3つのルックアップで実行できる値を含むmysqlクエリの結果です。私は3つの部分にクエリを分割しました。今問題は、3つの部分を3つの異なるページに送り、掘り出しルックアップを実行する方法がわかりません。私はフォームでそれを行う方法を知っているだけです。だから私はあなたに上記のコードを示しました。私は今空白だ。

私を助けてください。前もって感謝します。

+1

@MarkBaker [バッククォートは、シェルコマンドを実行する](http://php.net/manual/en/language.operators.execution.php)の[ 'の/ usr/binに/ dig'](HTTP ://linux.die.net/man/1/dig)は1つです。 – Powerlord

+0

私は直面している - 今日の学習の新しいビット –

+0

あなたのアプリケーションが10秒間に何をしたいと思いますか? – webbiedave

答えて

0

は、第2の上部にコメントで提供アイデアを試してみてください:

Does PHP have threading?

PHPは、私の知る限り、マルチスレッドはありませんが、これはバックグラウンドプロセスとして、それぞれを実行する方法です。それがページで実行されている場合

+0

これは理論的に質問に答えるかもしれませんが、答えの本質的な部分をここに含め、参照のためのリンクを提供することが望ましいでしょう(http://meta.stackexchange.com/q/8259)。 –

0

さて、あなたはまた、いくつかを使用して、アヤックスを使用しようとすることができ、それは非常に簡単に

を行うことができるJavaScriptライブラリここでは、AJAXを使用するためのドキュメントは、jQueryので

http://api.jquery.com/category/ajax

です
0

exec()を使用している限り、バックグラウンドでシェルコマンドを実行し、3番目の引数をファイルまたは他の出力ストリームにポイントすることができます。そうしないと、PHPは次のコード行を実行する前にコマンドの実行を待ちます。

http://php.net/manual/en/function.exec.php

1

これはyou'reは、お使いのNSサーバーまたはホストファイルのキャッシュ時間をドメインネームサーバ上で3つのルックアップを実行しようとし、各ホストに依存し、また、マルチスレッドされていない、スピードは変えることができます。

しかし、私は理解していれば、あなたは、シェルのバッチ処理を使用して欲しいものを達成することができます

$ dig uol.com.br; dig aol.com; dig nytimes.com 

またはより良い、なぜなら掘るのサポートは:

$ dig uol.com.br aol.com nytimes.com 

これは、一度使用しての3つのルックアップをもたらします';'で連結された1つのコマンドライン。

$hosts[] = 'aol.com'; 
$hosts[] = 'uol.com.br'; 
$hosts[] = 'nytimes.com'; 

passthru('dig '.implode(' ',$hosts)); 

希望いくつかの方法があります

+0

しかし、すべてのルックアップがまだ順番に行われているわけではありませんか?これはどのように変化しますか? – webbiedave

1

を支援します。

この使用に配列を実装します。

  1. ちょうど1つのipを返してデータベースに更新している小さなPHPスクリプトを作成します。 exec()でこれらのプロセスを実行します。メインのPHPプログラムでは、すべてのプロセスステータスがデータベースで「終了」するまで待ちます。 dbからすべての結果を取得します。注:プロセスをバックグラウンドで実行するには、nohupパラメーターを使用します。

  2. あなたの目標を達成するためにphp pcntlを使用してください。

関連する問題