当前位置: 首页 > 面试题库 >

PHP中的异步shell exec

羿易安
2023-03-14
问题内容

我有一个PHP脚本,它需要调用shell脚本,但根本不关心输出。Shell脚本会进行许多SOAP调用,并且完成起来很慢,因此我不想在等待回复时放慢PHP请求。实际上,PHP请求应该能够退出而不终止shell进程。

我已经研究过的各种exec()shell_exec()pcntl_fork(),等功能,但他们都不似乎提供正是我想要的。(或者,如果这样做,我不清楚如何做到。)有什么建议吗?


问题答案:

如果它“不关心输出”,是否不能使用&后台进程调用脚本的exec ?

编辑
-结合@AdamTheHut对这篇文章发表的评论,您可以将其添加到对以下内容的调用中exec

" > /dev/null 2>/dev/null &"

这样会将stdio(first >)和stderr2>)都重定向到/dev/null后台并在后台运行。

还有其他方法可以执行相同的操作,但这是最简单的方法。

上述双重重定向的替代方法:

" &> /dev/null &"


 类似资料:
  • 问题内容: 我正在用PHP执行两个curl请求。它们的外观如下: 他们正在工作,但有时第二个curl post请求未执行。 我想同时执行这两个请求。 我怎样才能做到这一点?请注意,他们在邮递区中采取不同的选择。 谢谢你的帮助! 问题答案: 因此,您要做的是异步执行cUrl请求。 因此,您将需要一个用于php的异步/并行处理库。 php的著名线程库之一是 您首先需要获取dll / so文件并将其保存

  • 问题内容: 我在一个比较大的Web应用程序上工作,后端主要使用PHP。代码中有几个地方需要完成一些任务,但是我不想让用户等待结果。例如,在创建新帐户时,我需要向他们发送欢迎电子邮件。但是,当他们按下“完成注册”按钮时,我不想让他们等到实际发送电子邮件之后,我只想开始该过程,并立即向用户返回一条消息。 到目前为止,在某些地方,我一直在使用exec()感觉像是被黑客入侵。基本上是这样的: 这似乎可行,

  • 我希望我的请求触发一些长时间运行的操作,这些操作应该在后台执行。我编写了以下实现,应该在后台处理我的操作,但实际上我的请求是同步执行的: 在日志中,我看到以下内容: 我看到我的在另一个线程中执行,但出于某种原因,我的原始请求等待sleep完成 更新1:

  • 问题内容: 我想要做的是异步地从数据库或内存缓存中加载一些数据。 我知道我知道。“ PHP不支持线程”。 但是register_tick_function呢?确实不是线程吗? 有没有人利用register_tick_function完成任何类型的预测性预加载或实际上进行了任何后台处理? 问题答案: PHP当然可以支持线程。从SQL /NoSQL数据库并行加载数据绝对有可能。请参阅PHP手册,在gi

  • 问题内容: 除了java.nio之外,java中还有什么用于异步io(基于套接字)的选项?java.nio还会在后台使用线程吗(就像我认为.NET的async-socket-library所做的那样,也许它已被更改),还是使用适当的select调用是“ true”的异步io? 问题答案: Java的NIO软件包(从Java6开始)通过Selector提供对非阻塞I / O的仅支持。希望Java7随

  • 本文向大家介绍再谈Javascript中的异步以及如何异步,包括了再谈Javascript中的异步以及如何异步的使用技巧和注意事项,需要的朋友参考一下 为什么需要异步?why?来看一段代码。 问题1:   这段代码的意思是执行100...次后再执行alert,这样带来的问题是,严重堵塞了后面代码的执行,至于为什么,主要是因为JS是单线程的。 问题2:   我们通常要解决这样一个问题,如果我们需要在