PHP如何请求url之后不需要等待url返回值,直接执行后面代码?
伊谢尔伦
伊谢尔伦 2017-04-10 16:19:10
[PHP讨论组]

最近开发中遇到这么一个问题,程序第4行会请求一个url,但是这个url的响应时间很长,而且我的程序中用不到他的返回值,所以我在想能不能在第4行发送请求之后不用等待他返回值,直接执行第5行代码,可以吗?如果可以的话,怎么做到?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(8)
PHPz

sleep(10)这个长达10秒的操作由正在提供Web服务的PHP进程来处理显然是不合适的,因为这肯定会造成一个PHP工作进程被阻塞.这时可以考虑用popen或proc_open异步调用一个CLI程序进行一些耗时的操作.

/www/index.php
<?php
$sec = 10;
//pclose(popen('/www/cli.php '.$sec.' &', 'r'));
pclose(popen("/www/cli.php -s $sec &", 'r'));

/www/cli.php
#!/png/php/5.4.39NTS/bin/php
<?php
$argv = getopt('s:');
sleep($argv['s']);
file_put_contents('/www/cli.txt', $argv['s']);
//print_r($argv);
//cli.php处理完耗时的任务后往数据库存结果,浏览器端用AJAX轮询异步得到数据.
ringa_lee

如果你用不到这个返回,你可以直接把这个地址存到数据库,由别的程序在服务器上执行

天蓬老师

可以使用 php 异步扩展 swoole.

迷茫

用队列请求
用队列请求
用队列请求

天蓬老师

这肯定是不可以的 !

要么你使用队列执行 .
要么 你用 swoole 或者 Node.js

PHP 在设计上就决定了 , 它只能从头到尾执行 。

阿神

生产者/消费者模式

PHP中文网

简单粗暴的写法,可以把这个逻辑用register_shutdown_function()执行

黄舟

你不需要返回一个请求的内容 你去请求他干啥。。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号