0

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

我是 PHP 新手,我正在破译别人的代码,但不知道这段代码在做什么。我查看了此处system的文档,所以我知道它将执行 PHP 脚本,这是传递给该脚本的参数……但在那之后我迷路了。somescript.php$something

另外,脚本的哪一部分$something被传递给了?它如何知道somescript.php首先调用哪个函数?

4

4 回答 4

2

您是正确的,它执行$something作为参数传递的脚本。这> /dev/null只是将输出输送到黑洞(即抑制它)。该&部件在后台启动脚本。

于 2012-08-15T20:13:42.930 回答
2
system("php ./somescript.php $something >/dev/null &");

可以拆分为:

system(

这是在shell中执行命令的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 ,这就像“空设备”的别名,或者只是..nothing。

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

最后,我们要求脚本在后台运行,&这意味着一旦脚本启动,控制权就会返回给 shell

于 2012-08-15T20:16:54.640 回答
1

它基本上是运行./somescript.php程序,$something作为命令行参数。

它通过将输出路由到null设备来显式忽略输出。

它在自己的外壳中运行它并且不等待它完成(这是最后的&一点)。

我假设这somescript.php是一个运行某种后台任务的程序。运行可能需要一些时间,但是您的主程序不需要知道该任务的结果,因此不需要等待它完成。

[编辑]

$something作为命令行参数传递给程序。从命令行调用 PHP 时,参数将填充到$argv数组中。

有关更多信息,请参阅 PHP 手册:

于 2012-08-15T20:16:48.777 回答
1

1 - system执行外部程序 2 PHP
- php ./somescript.php $somethingPHP cli执行一个调用的脚本./somescript.php,其中一个参数是$something
3 - >/dev/null: 重定向stdout/dev/null这意味着您不会看到标准输出,但您仍然会看到stderr. 有关输出重定向的更多信息。那纯粹UNIX是无关的PHP
4 - &:在后台发送命令,这样就PHP可以继续执行,而不必等待外部程序完成。再一次,纯粹的,与本身UNIX无关。更多信息PHP

于 2012-08-15T20:19:34.580 回答