1

我正在运行一个 sh脚本,该脚本在ubuntu服务器上通过php运行一个java进程。我正在使用 proc_open 来运行该进程。通常工作流程是这样的:

  • 请求页面->
  • 脚本运行(直到完成)->
  • 结果页面。

在我的情况下,脚本并行运行,因此服务器不会等到脚本完成(有时需要几个小时,所以它不能),所以我需要以某种方式保存该资源以便以后跟踪它(进程的状态或只是停止它)。

资源类型是“进程”,我使用这个函数get_resource_type来获取它。

在这种情况下,序列化不起作用 - 资源是一个例外(您可以查看参数框中的http://il2.php.net/manual/en/function.serialize.php )。

我的目标是良好的流程处理。有人知道我如何使用资源或其他方式来处理流程。

4

2 回答 2

1

您不能存储资源类型以供以后在 PHP 中使用。你需要做的是实现某种形式的异步通信——可能是一个文件,一个写入状态信息,另一个读取,一个共享内存,一个命名管道,......

我会调查pcntl 扩展名。提示:出于安全原因,无法在 Web 服务器环境中进行分叉。

于 2009-06-04T09:31:05.623 回答
0

在我的情况下,脚本并行运行,因此服务器不会等到脚本完成(有时需要几个小时,所以它不能)..

这本身不应该是一个问题。只要不是从 Web 服务器启动,您就可以轻松地拥有一个长时间运行的 php 进程。如果您需要从 Web 应用程序启动该过程,我建议您在数据库表中插入一个条目,然后让 cronjob 运行一个脚本,该脚本检查此队列并进行处理。

于 2009-06-04T09:46:36.950 回答