当前位置: 首页 > 知识库问答 >
问题:

Php proc_open-将进程句柄保存到文件并检索它

池庆
2023-03-14

我使用以下代码打开proc_open进程,并将句柄和管道保存到文件中:

    $command = "COMMAND_TO_EXECUTE";

    $descriptors = array(
        0 => array("pipe", "r"), // stdin is a pipe that the child will read from
        1 => array("pipe", "w"), // stdout is a pipe that the child will write to
        2 => array("file", "error-output.txt", "a")  // stderr is a file to write to
    );


    $pipes = array();

    $processHandle = proc_open($command, $descriptors, $pipes);

    if (is_resource($processHandle)) {     

        $processToSave = array(
            "process" => $processHandle,
            "pipes" => $pipes
        );

        file_put_contents("myfile.bin", serialize($processToSave) );        

    }

在第二个时刻,我需要从文件中检索这个文件句柄,我使用了这个代码:

$processArray = unserialize(file_get_contents("myfile.bin"));  
$processHandle = $processArray["process"];
$pipes = $processArray["pipes"];
 var_dump($processHandle) ->  int(0)
 var_dump($pipes) - > array(2) { int(0), int(0) }

当然,在这一点上,如果我试图关闭管道,我会得到一个错误,资源预期,整数给定。

我怎样才能让这工作?(注意:这是我正在寻找的解决方案)

但是或者,我也可以得到进程的pid,然后使用这个pid来停止或杀死进程,或者对进程做任何其他事情,但是管道呢?如何读取/写入或保存进程中的错误?

谢谢你

共有1个答案

姜楷
2023-03-14

找到了自己的解决方案,不可能序列化资源,当脚本完成时,这些资源处理程序是免费的。

解决方案是创建一个监听端口的守护进程,根据请求启动和停止进程。因为进程总是在运行,所以它可以维护处理程序进程的列表,并在请求时停止。

 类似资料:
  • 问题内容: 用相机拍照后,我想将其保存在该布局中。我还想将其保存到文件中,并在创建活动时能够加载该图片(因此,如果我切换到其他活动并返回到此活动)。到目前为止,我可以拍照并显示它,但是如果我多次切换活动,图片就会丢失。我有以下相关代码: 我使用以下命令加载图片OnCreate : 问题答案: 听起来您的代码可以正常工作,但是当活动恢复时,您将丢失图像。您可能需要用onPostResume()而不是

  • 问题内容: 嗨,我正在尝试将EditText小部件值保存在手机/平板电脑的内部存储器中,以便应用程序关闭或活动停止时可以自动检索它们。所有这些都可以使用保存按钮来完成。(窗口小部件的值由用户输入)。 问题答案: 您应该使用共享首选项,共享首选项用于在需要访问数据时将其存储在本地应用程序中。使用此链接https://www.journaldev.com/9412/android- shared-pr

  • 问题内容: 我有一个必须运行许多模拟运行的应用程序。我想设置一个日志记录机制,其中所有日志记录都记录在general.log中,而所有用于模拟运行的日志都进入run00001.log,…。为此,我定义了一个Run类。在新的文件句柄中添加了运行日志。 问题在于,运行的日志文件永远不会释放,因此在运行了许多次之后,可用的句柄就用光了,运行崩溃了。 我已经设置了一些例程来测试它,如下所示 主程序 类Ru

  • 问题内容: 是否可以将JSON数据保存到本地文本文件中?因此,稍后我可以通过加载该文件再次使用它,并取回存储的JSON数据。其实我真正想做的是在文本文件中导出JSON数据,以便以后可以用作import.Any的建议或解决方案? 这是我要用于导出到文本的一些示例。 http://jsfiddle.net/k56eezxp/ 问题答案: 是否可以将JSON数据保存到本地文本文件中? 是。当前,链接的j

  • 我正在制作一个soundboard应用程序,当长按按钮1时,我需要共享sound1。我可以用以下代码创建共享菜单: 我可以与whatsapp和Google Drive完美共享音频文件,但其他应用程序不起作用。我听说您必须将文件复制到外部存储,并从那里共享它们。我已经搜索了将近两天,但我找不到这样做的方法。Stack上的其他文章也帮不了我:/ 如何在外部存储器中创建目录,将文件(sound1.ogg

  • 我已经花了六个小时从谷歌的文件,我仍然不知道如何开始与这个。我想做的就是让我现有的Android应用程序可以从Google Drive读取文件,上传新文件到Google Drive,并编辑Google Drive上的现有文件。 我读到过Drive SDK v2专注于让Android(以及一般的移动)开发人员轻松地使用它,但在他们的文档中似乎几乎没有任何关于它的内容。 理想的情况下,我希望有人能指出