【问题标题】:How can I use AT command of linux from PHP? [duplicate]如何从 PHP 使用 linux 的 AT 命令? [复制]
【发布时间】:2012-12-06 12:10:16
【问题描述】:

可能重复:
Creating an email queue in PHP?

我的 PHP 脚本正在发送数百封电子邮件。我想将这些电子邮件发送时间之间的间隔设置为 5 分钟。我的意思是,每 2 封电子邮件之间的时间点击应该是 5 分钟。比如一个应该在上午 12:45 发送,第二个应该在上午 12:50 发送等等。

为此我从命令行尝试过:

at 08:10am Dec 19
echo "Welcome" | mail -s "Hello world" abc@abc.com

所以这很好,邮件在上午 08:10 发送。但是,我怎样才能从 PHP 做同样的事情呢? 如何在 PHP 中使用 linux 的 AT 命令?

或者还有其他简单的方法吗?

【问题讨论】:

  • 有很多这样的问题和例子——你只需要做一些研究。基本上,您将要在数据库中发送的电子邮件排队。然后你有一个后台进程(守护进程)定期发送大量电子邮件,并在数据库中将它们标记为“已发送”。在这里使用at 是不合适的。例如:Creating an email queue in PHP?
  • 是的,但我不想在这里整合数据库头疼,我只想使用Linux命令。所以请给我建议。
  • 如果你尝试使用at,你肯定会更加头疼。这是一个 hack 和一个糟糕的设计决策,应用程序的成功可能会随之而来。但话又说回来,我不确定你是否关心 - 在这种情况下:php execute shell command。世界触手可及。拥抱它。

标签: php linux email at-job


【解决方案1】:

回答您的问题:

可以使用多种方法从 PHP 调用外部程序。其中之一是passthru(),并为其提供与您手动编写的相同的完整命令字符串。

您可以使用的其他功能是:

popen() // Opens process file pointer
exec() // Execute an external program
system() // Execute an external program and display the output
passthru() //- Execute an external program and display raw output
pcntl_exec() // Executes specified program in current process space
`at` // backtick operator

作为一个附带问题:

电子邮件队列确实更适合这种情况 - 使用 at 是您想要完成的任务的简单技巧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多