php - 在后台运行 PHP 脚本

标签 php

我正在测试在 Debian 的 OS-X 系统上开发的 php 脚本,它在那里的行为有所不同。

为了重现它,我写了两个脚本:parent.php 和 child.php:

parent.php:

#!/usr/bin/php
<?php

echo "parent started...\n";
shell_exec(__DIR__ . '/child.php &2>/dev/null &');
echo "parent finished.\n";

child.php:

#!/usr/bin/php
<?php

echo "child started...\n";
sleep(5);
echo "child finished.\n";

在 OS-X 上运行 parent.php 我立即得到两条输出线(父启动,父完成)。在 Debian 上,我得到“父级开始...”行,然后延迟 5 秒,然后是“父级完成”。在 shell 中运行“./child.php &2>/dev/null &”会按预期立即返回提示。有什么办法可以解决这个问题吗?

最佳答案

这是因为&2>部分。可能并非所有系统都支持它。同样在每个 shell(bash、sh、ksh 等)中。

试试这个,

 exec("/bin/bash -c '/usr/bin/php /path/to/child.php 2> /dev/null' &");

如果你想抑制所有的输出使用这个,

 exec("/bin/bash -c '/usr/bin/php /path/to/child.php &> /dev/null ' &");

BASH-HOWTO

刚刚测试过,exec("/usr/bin/php/path/to/child.php >/dev/null 2>&1 &") 应该也能工作。

关于php - 在后台运行 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8898750/

相关文章:

php - 使用表锁防止并行执行 (MySQL)

php - html5 嵌入 mp4 视频 |如何知道设备是iphone 3/3gs 还是4 | mp4尺寸太大

php - preg_replace 排除 <a href ='' '></a> PHP

php - 提高查询速度 Ionic/Laravel 发布请求

php - 如何在sql中选择下一行分页

php - 如何在 PHP 中用单个标点符号替换所有重复的标点符号?

javascript - 如何检索 Summernote 的内容?

php - 我如何更新 phpunit?

php - MySQL/PHP - 时间流逝

php - 将 ACF 字段添加到搜索结果页面 WordPress