Kyl*_*yle 32 php linux command-line
我正在尝试通过Linux中的命令行在后台持续运行PHP脚本.我已经尝试过该命令php filename.php &但似乎脚本执行很快就会终止,而它应该继续运行直到进程终止.
有什么建议?
Ped*_*ito 54
您确定该脚本不包含任何错误吗?这通常会使" 执行很快终止 ".
首先,追加:
error_reporting(E_ALL); ini_set('display_errors', 1);
在脚本的顶部显示它可能有的任何错误,然后您可以使用:
nohup php filename.php &
即使会话断开连接或用户注销,nohup也会运行命令.
要么
nohup php filename.php >/dev/null 2>&1 &
与上面相同但不创建
nohup.out文件.
您还可以使用:
ignore_user_abort(1);
设置客户端断开连接是否应中止脚本执行
set_time_limit(0);
限制脚本最长执行时间,在这种情况下,它将一直运行,直到进程完成或apache进程重新启动.
该php和filename.php路径可以被设置为一个完整路径,而不是php和filename.php,你可以使用/usr/bin/php和/full/path/to/filename.php.
建议使用完整路径以避免文件未找到错误.
nohup php file.php > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)
此类>命令中的大于号()将程序的输出重定向到某处。在这种情况下,某些内容将被重定向到/dev/null,而某些内容将被重定向到&1
标准输入,输出和错误
程序有三个标准的输入和输出源。如果标准输入是交互式程序,则通常来自键盘;如果正在处理另一个程序的输出,则通常来自另一个程序。该程序通常打印到标准输出,有时打印到标准错误。这三个文件描述符(您可以将它们视为“数据管道”)通常被称为STDIN, STDOUT, and STDERR。
有时他们没有被命名,而是被编号!它们的内置编号为0, 1, and 2,顺序为。默认情况下,如果您未明确命名或排名第一,则是在谈论STDOUT。
上面的命令将标准输出重定向到/dev/null,在这里您可以转储不需要的任何内容,然后将标准错误重定向到标准输出(&执行此操作时必须在目标前面放置一个)。
因此,简短的解释是“该命令的所有输出都应该被塞进一个黑洞中。”这是使程序真正安静的一种好方法!
& 最后将命令置于后台。
参考:https : //www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/
| 归档时间: |
|
| 查看次数: |
35496 次 |
| 最近记录: |