/dev/null 2>&1 & 其他建议使-6ren">
gpt4 book ai didi

php - 我应该使用 "| at now"还是符号 (&) 在后台运行脚本?

转载 作者:IT王子 更新时间:2023-10-29 01:02:15 24 4
gpt4 key购买 nike

我一直在查看有关在后台运行 php 脚本的答案,它们似乎以两种方式传播。

有些人建议使用这个(或类似的东西):

/usr/bin/php command >/dev/null 2>&1 &

其他建议使用“at”命令:

echo '/usr/bin/php command'| at now

这两种方法的主要区别是什么?有什么优点和缺点?

我想做的是当用户提交表单时,我需要运行几分钟长的脚本,显然应该在后台运行。我已经尝试了两种方法,它们都对我有用,但我不确定该选择哪一种。

最佳答案

at 命令是一个调度程序,它接受来自标准输入的字符串或包含在特定时间运行的命令的文件。你的例子:

echo '/usr/bin/php command'| at now

将您的命令作为字符串提供给“at”命令并安排它立即运行。

第一种方法是通过 shell 将进程后台化的典型方法:

/usr/bin/php command >/dev/null 2>&1 &

其中的“>/dev/null”部分是告诉 shell 将命令的标准输出发送到/dev/null,其中的“2>&1”部分是说将 stderr 的输出发送到您对标准输出的命令(然后转到/dev/null)。它们一起抑制输出。实际上,您可以一步完成:

/usr/bin/php command &>/dev/null &                 # bash

末尾的“&”告诉 shell 将进程置于后台。

使用“at”的优点是可以灵活安排命令在不同于现在的其他时间运行(除其他事项外)。阅读它的手册页。缺点是它可能不会安装在所有系统上。

通过 shell 使用 & 的优点是后台本身没有开销。使用“at”立即运行命令有点矫枉过正,因为它涉及为 at 创建一个新进程、调度命令、意识到它已设置为现在运行,然后在后台运行它。而在 shell 中运行带有“&”的命令只会在后台运行该命令。

关于php - 我应该使用 "| at now"还是符号 (&) 在后台运行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com