php curl异步发送邮件,cURL实现异步http POST

Publish: December 25, 2014

Category: 生活

No Comments

$cmd = 'curl --form file=@/home/www/default/test/aa1.jpg --form name='.time().'.jpg http://www.xxxx.net/test/upload.php > /dev/null 2>&1 &';

exec($cmd);

我们可以通过exec 操作curl工具来发出请求。curl请求才可以做为独立进程一部分来完成,允许php代码继续执行,而不会阻塞socket连接。

这种方法的性能介于前面两种方法之间,比soket方法快,比写文件的方法花费更少的系统资源。

操作 forkd curl 方法,最简单的例子如下:

//$cmd = 'curl --form file=@/home/www/default/test/aa1.jpg --form name='.time().'.jpg http://www.xxxx.net/test/upload.php > /dev/null 2>&1 &';

$cmd = 'curl --form '.$file.' --form '.$name.' '.$url.' > /dev/null 2>&1 &';

exec($cmd);

return true;

}

?>

如果运行在生产模式,我们不希望等着fork进程的消息输出。所以代码中加添了"> /dev/null 2>&1 &"让进程正确的执行 ,而把任何可能输出都丢弃掉。

同样功能的shell脚本如下:

curl --form file=@/home/www/default/test/aa1.jpg --form name='.time().'.jpg http://www.xxxx.net/test/upload.php > /dev/null 2>&1 &'

脚本花费了大概1秒多一点的时间,占用大约4k的的常驻内存。而curl进程用了 标准SSL 300毫秒完成请求,exce调用立刻相应php程序。这使得服务页面能很快相应用户。

笔者用一台一般水平的机器试验,这种方法curl可以每秒响应100个左右https请求,而没有任何的内存开销。如果不用SSL,响应的请求会更多。

不用等待输入,Fork一个进程非常快。

curl花费了和socket同样时间响应一个请求,但是这个外带的过程。

调用curl需要仅仅普通的unix基础。

Fork发起一个简单的请求,只需要几毫秒的时间,但是大量的同步调用(forks)会导致系统变慢。

Tags: none

Related Posts:

[尚无相关文章]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值