【发布时间】:2011-06-22 00:58:06
【问题描述】:
有什么方法可以检查 curl 命令的状态吗?说,我从 php 调用 curl,使用 exec 启动它。有没有办法在它运行时检查它的进度?还是我必须等待它完成?
exec("curl $url -k > /dev/null 2>&1 &");
【问题讨论】:
有什么方法可以检查 curl 命令的状态吗?说,我从 php 调用 curl,使用 exec 启动它。有没有办法在它运行时检查它的进度?还是我必须等待它完成?
exec("curl $url -k > /dev/null 2>&1 &");
【问题讨论】:
你可以定义一个进度函数:
curl_setopt($curl, CURLOPT_PROGRESSFUNCTION, 'my_progress_handler');
回调函数的名称,其中 回调函数需要三个 参数。第一个是卷曲 资源,第二个是 文件描述符资源,以及 第三是长度。返回字符串 包含数据。
如需更多信息,请参阅here。
注意:This comment 质疑 PHP 自己的函数签名。
你不能使用exec(),因为它是一个阻塞函数。它将一直等待,直到手头的程序终止。
编辑:哦,我看到你使用了 & 符号,没关系
您可以使用的是popen(),但除非 curl 有一种输出进度的好方法,否则这不会很漂亮。
我建议将-# 作为参数传递给curl,这样您就可以很好地从输出流中获取进度。
【讨论】:
curl_init() 和curl_exec() 工作。 @datasage:是的,我刚刚在上次编辑中注意到并纠正了这一点。但是,popen() 或 proc_open() 会更漂亮,因为您可以直接获得外流流句柄。