0

system("php ./somescript.php $something >/dev/null &");

私は PHP が初めてで、他の人のコードを解読していますが、このコードが何をしているのかわかりません。systemドキュメントhereを見たので、PHPスクリプトがで実行されることを理解しました。これはsomescript.php$somethingそのスクリプトに渡されるパラメーターです...しかし、その後は迷子になります。

また、スクリプトのどの部分に$something渡されますか? どの関数をsomescript.php最初に呼び出すかをどのように知るのでしょうか?

4

4 に答える 4

2
system("php ./somescript.php $something >/dev/null &");

次のように分割できます。

system(

これはシェルでコマンドを実行するphp関数です

system("php

phpコマンドラインインタープリターの実行を求めています

system("php ./

を使用して現在のディレクトリを調べるようにインタープリターに求めています./

system("php ./somescript.php

phpファイルが実行されると言っていますsomescript.php

system("php ./somescript.php $something

$something実行中のスクリプト内の変数をsystem()引数としてスクリプトに渡します。somescript.php

system("php ./somescript.php $something >/dev/null

出力を .. に送信する必要があると言っていますが、これは/dev/null基本的に画面に出力を出力しないことを意味します。>リダイレクトコマンドです。つまり> /dev/null、出力を /dev/null にリダイレクトすることを意味します。これは、「null デバイス」のエイリアスのようなものか、単に..何もありません。

system("php ./somescript.php $something >/dev/null &");

最後に、スクリプトをバックグラウンドで実行するように要求しています&。これは、スクリプトが開始されるとすぐに制御がシェルに戻されることを意味します。

于 2012-08-15T20:16:54.640 に答える
2

$somethingパラメータとして渡されたスクリプトを実行することについては正しいです。出力をブラックホールにパイプする> /dev/nullだけです(つまり、それを抑制します)。この&部分は、バックグラウンドでスクリプトを起動します。

于 2012-08-15T20:13:42.930 に答える
1

1- system外部プログラムの 実行PHP
2- php ./somescript.php $something:1つの引数をとって呼び出されたスクリプトのPHP cli実行。 3- :リダイレクトします。これは、標準出力は表示されませんが、引き続き表示されることを意味します。出力リダイレクトの詳細。それは純粋にとは何の関係もありません。 4- :外部プログラムが完了するのを待たずに実行を続行できるように、バックグラウンドでコマンドを送信します。繰り返しますが、純粋で、それ自体とは何の関係もありません。詳細情報./somescript.php$something
>/dev/nullstdout/dev/nullstderrUNIXPHP
&PHPUNIXPHP

于 2012-08-15T20:19:34.580 に答える
1

基本的には、コマンド ライン パラメーターとして./somescript.phpプログラムを実行しています。$something

出力をデバイスにルーティングすることで、出力を明示的に無視しnullます。

そして、それは独自のシェルで実行され、終了するのを待ちません (それ&は最後のビットです)。

somescript.phpこれは、ある種のバックグラウンド タスクを実行するプログラムだと思います。実行にはおそらく少し時間がかかりますが、メイン プログラムはそのタスクの結果を知る必要がないため、完了するまで待つ必要はありません。

[編集]

$somethingコマンドライン引数としてプログラムに渡されます。$argvPHP がコマンド ラインから呼び出されると、引数が配列に取り込まれます。

詳細については、PHP のマニュアルを参照してください。

于 2012-08-15T20:16:48.777 に答える