system("php ./somescript.php $something >/dev/null &");
我是 PHP 新手,我正在破译别人的代码,但不知道这段代码在做什么。我查看了此处system
的文档,所以我知道它将执行 PHP 脚本,这是传递给该脚本的参数……但在那之后我迷路了。somescript.php
$something
另外,脚本的哪一部分$something
被传递给了?它如何知道somescript.php
首先调用哪个函数?
您是正确的,它执行$something
作为参数传递的脚本。这> /dev/null
只是将输出输送到黑洞(即抑制它)。该&
部件在后台启动脚本。
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
它基本上是运行./somescript.php
程序,$something
作为命令行参数。
它通过将输出路由到null
设备来显式忽略输出。
它在自己的外壳中运行它并且不等待它完成(这是最后的&
一点)。
我假设这somescript.php
是一个运行某种后台任务的程序。运行可能需要一些时间,但是您的主程序不需要知道该任务的结果,因此不需要等待它完成。
[编辑]
$something
作为命令行参数传递给程序。从命令行调用 PHP 时,参数将填充到$argv
数组中。
有关更多信息,请参阅 PHP 手册:
1 - system
:执行外部程序 2 PHP
- php ./somescript.php $something
:PHP cli
执行一个调用的脚本./somescript.php
,其中一个参数是$something
。
3 - >/dev/null
: 重定向stdout
到/dev/null
这意味着您不会看到标准输出,但您仍然会看到stderr
. 有关输出重定向的更多信息。那纯粹UNIX
是无关的PHP
。
4 - &
:在后台发送命令,这样就PHP
可以继续执行,而不必等待外部程序完成。再一次,纯粹的,与本身UNIX
无关。更多信息。PHP