exec和popen的区别

5
我想在我的服务器上运行一个外部的PHP文件。我发现可以使用execpopen
我读到popen被用于Windows,而exec被用于Linux。
另一方面,我看到一些例子中也可以在Linux上使用popen。我还是个新手,这可行吗?如果execpopen都能工作,你推荐使用哪个?
请说明其优点,因为我还很困惑。

3
阅读手册:http://php.net/manual/zh/book.exec.php - hek2mgl
3个回答

6
如果您只需要执行外部应用程序,请使用exec()shell_exec()。如果您需要一个指针,类似于fopen()打开文件的方式,那么可以使用popen()。而fopen()只是打开文件指针,仅此而已。然后您需要其他函数(fread()fwrite())来实际处理文件。 popen()也适用于相同的逻辑。 exec()shell_exec()可在Windows和Linux上使用。

3
在我的案例中,我使用popen来从Apache Web应用程序异步运行PHP脚本。我尝试了execshell_execpclose(popen(...)),而唯一一个创建新进程并异步执行它的是popen。所有其他方法都会等待脚本完成后才回复浏览器。
我的配置是CentOS7,PHP 5.4.16和Apache 2.4,在Windows上没有尝试过。

在Linux中,如果您使用exec运行带有&的命令,则会立即返回并异步运行它。问题是:在这种情况下,使用popen是否有区别? - Yuval A.

1

PHP旨在实现跨平台。所有进程执行函数都可以在Linux和Windows(以及PHP支持的任何其他平台)上工作。在从不可信的来源“听到”任何消息之前,建议您阅读PHP手册


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接