调用proc_open而不等待响应

时间:2017-06-23 13:47:35

标签: php connection fsockopen proc-open

由于我必须解释为什么我的问题与问题php background process in windows environment不同,解释是:

首先,我想在php中通过proc_open运行shell脚本,而不是通过exec运行。

  

从概念上讲,它在我的脑海中是一个孤立的线程(如果它成功了),   它将在后端运行,填充日志文件或排队的数据库表   从中可以查看我的结果。

我有一个proc_open代码,最终在cli中运行一个php文件:

文件:proc-open.php

    $descriptorspec = array(
       0 => array("pipe", "r"),
       1 => array("pipe", "w"),
       2 => array("file", "midirectory_path/error-output.txt", "a")
    );
    $process = proc_open("php -f myphpfile.php", $descriptorspec, $pipes, "midirectory_path");
    if (!is_resource($process)) {
        die ('Could not execute RUNMYSCRIPT');
    }

    sleep(10);
    fwrite($pipes[0], 'q');
    $result = fread($pipes[1], 1);
    echo stream_get_contents($pipes[1]);
    proc_close($process);

我想点击这行代码,但不想等待响应: 文件:proc-call.php

$url = 'http://example.com/proc-open.php';
$parts=parse_url($url);
$fp = fsockopen($parts['host'],isset($parts['port'])?$parts['port']:80, $errno, $errstr, 30);
$out = "GET ".$parts['path']." HTTP/1.1\r\n";
$out.= "Host: ".$parts['host']."\r\n";
$out.= "Content-Length: 0"."\r\n";
$out.= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fclose($fp);

但它没有调用proc_open,我在任务管理器中看不到任何php cli。 我在浏览器中点击http://example.com/proc-call.php,它返回200。

需要帮助。

0 个答案:

没有答案