先吐槽
原本做IOS开发,被朋友认为程序员都是万能的,麻烦帮做一个网站呢。。
尼玛啊,郁那个闷下了份PHP做的某个网站的开源代码,准备修修补补搞定
结果发现这坑爹人开发人员在运行一个php文件时,连接数据库,然后php完成后断开数据库,这中间由于要转化一个文件,极其耗费时间的动作啊,我测试的文件要转换30秒++,结果那坑爹的数据库就开始报连接超时等问题了
因为他执行的是exec的函数去执行一个外部程序,等待返回,然后继续执行后面的一些操作(包括数据库插入数据)。这样明显有问题的嘛,这坑爹的怎么能这么干啊,我不是要修改很多了啊啊啊啊啊,
于是我捉摸着先勉强让整个网站跑起来吧,于是准备修改下exec这部分的逻辑,改成不等待执行结果的返回,直接异步去调用一个外部程序,然后继续执行后续操作。这样至少不会因为这个地方超时吧。但是更坑爹的是,尼玛我这种菜B找度娘找了半天也没找到合适的异步执行外部程序的代码。
好吧,我太菜了,
求高手直接致电下吧
如果异步执行一个外部程序,比如exec("a.exe");如何立即返回结果而不等待执行a.exe结束就返回。
大神求救了

解决方案 »

  1.   

    php在win没有多进程,unix可用 pcntl_fork 你应该了解php特性,php适用于快速处理简单请求,同等硬件下,对于简单任务,用户越多,比其他语言优势越明显,调用外部程序这类工作一般交给java什么的去做吧,接口和安全性更高
      

  2.   

    我有看到pcntl_fork,看到fork,我猜是unix的,所以也没用,
    我现在就是在windows上,难道就这么苦逼的搞不定了。那我就要搞好多事情了来完成这个貌似简单的工作了
      

  3.   

    难道非要调用这个外部的.exe?超时,有可能是链接外网等待什么结果非要异步执行,可将命令写入数据库,让另外一个进程去跑,模拟队列。至少不用在意什么系统
      

  4.   

    你可以放弃这个开源代码,另换一个在php程序中执行系统命令,只适合于命令行方式,web 方式下是不合适的
    不知道你在php程序中执行系统命令的目的
      

  5.   

    <?php
    $handle = popen('php demo.php', 'r');
    pclose($handle );
    ?>demo.php
    <?php
    exec("xxx");
    ?>
      

  6.   

    晕的一塌糊涂,PHP居然连这样的事都不支持啊
    伤心,看样子要自己搞了