PHP:在后台执行一个程序多次,一次


PHP : Execute a program in background multiple times, once

我用"C"编写了一个程序,我想用php执行它,我尝试使用函数php_exec,但它不起作用。更具体地说,我会告诉你一些细节。这个程序是用来让下载更快的,简而言之,用户会进入一个网页,放上他们的直接链接,然后提交他们的链接,从我的服务器上获得直接链接,这里的问题是"我怎么能让用户使用它,有没有等效于php_exec的东西?",我也想知道,这会伤害我的服务器吗?非常感谢。

在这种情况下,您可能不想使用exec,因为它会等待执行的程序完成,从而阻止完整的脚本。

PHP文档告诉您以下内容:

注意:如果使用此功能启动程序,为了使其在后台继续运行,必须将程序的输出重定向到文件或其他输出流。否则将导致PHP挂起,直到程序执行结束。

但是,您可能希望将链接添加到队列(可能是数据库),并不时执行cron作业,然后下载存储在队列中的文件。

还有另一个类似的问题,答案很好。

// Start your 'downloader'
$handle = popen('/path/to/executable 2>&1', 'r');
// While it's generating output, print it to the screen
while (!feof($handle)){
    echo fread($handle, 2096);
}
// Close the process handle
pclose($handle);

允许多个用户同时使用它。每个PHP进程将派生自己的/path/to/executable副本,并将后台进程的输出刷新到用户屏幕。