PHP异步:使用fsockopen卷曲在PHP中实现功能的方法类似于异步处理

PHP异步:使用fsockopen卷曲在PHP中实现功能的方法类似于异步处理
PHP从主流的观点,是一个面向过程的语言,其最大的缺点是无法实现多线程管理程序执行是从A到Z的逻辑依据,行政部门,不能出现,这是PHP的主流编程语言之一对于更高级的语言发展的原因的限制。

在PHP中,我们有时真的希望在执行操作时,同时为一个场景执行另一个操作:当用户抢选票时,您不想连接到数据库查询,插入行判断,用户完成后,用户返回结果。用户提交后,他可以告诉他,他已经成功地抢到了票,所以对于所有类型的操作,在后台处理的很好。当然,这种情况我们现在使用邮件列表的处理,对于每个用户的请求消息队列,用户必须在固定的告诉用户,关闭页面,背景是从队列中请求操作的消息。在这篇文章中,该操作是在后台进行的,用户无需等待

首先,我们必须创建一个请求条目:
< PHP

提交的数据

提交后台

告诉用户它已经完成了
第二,我们需要一个不影响用户在线运行的后端处理器
< PHP

ignore_user_abort(真的);
(0)set_time_limit;

数据来自
数据处理
现在的问题是,在第一部分,如何提交背景我们通过一个非阻塞请求实现这个函数,即创建一个可以访问的URL。在这个URL中,运行第二段程序,通过请求请求URL,并激活第二段程序自动运行。

然后让我们直接看看代码:
远程请求(未获取内容)函数
功能_sock($url){
为主机= parse_url($ URL,php_url_host);
港口parse_url美元($ URL,php_url_port);
$端口$端口:80;
$方案= parse_url($ URL,php_url_scheme);
路径= parse_url美元($ URL,php_url_path);
查询= parse_url美元($ URL,php_url_query);
如果(查询)路径$$查询;
如果($方案= = 'https){
为主机= 'ssl: / /。为主机;
}

FP = fsockopen(美元美元美元美元的主机,端口,error_code,error_msg美元,1);
如果(!$ FP){
返回的数组('error_code'error_code美元,'error_msg ' = $ error_msg);
}
{其他
stream_set_blocking($ FP,true); / /打开阻塞模式手动非说
stream_set_timeout($ FP,1); / /设置超时
元头= 获取$路径1.1;
$;
元头=连接:关闭;长连接关闭
fwrite($ FP,$标题);
usleep(1000); / /这句话是关键,如果没有这个延迟,可能在nginx服务器无法成功执行
Fclose($ FP);
返回的数组('error_code ' = 0);
}
}
我们创建了一个基于函数fsockopen,使用fsockopen访问URL的功能。然而,在访问时,它不需要获取URL显示的内容,而是简单地发送访问请求,然后在请求到达后立即关闭访问,这种方法的优点是不需要等待访问的URL返回可靠的信息并节省时间。这段代码的执行时间在0.1-0.2秒,这是普通游客几乎看不见的。所以,在使用时,你只需要调用这个函数和对应的URL。然而,也有一部分没有数据传输到这里。如何传输数据只需要将内容添加到$头。

除了fsockopen、卷曲实际上可以达到这样的效果,和一些主机不支持fsockopen,我们可以使用curl实现它。
功能_curl($url){
CH = curl_init(美元);
curl_setopt(CH美元,美元curlopt_url,URL);
curl_setopt($ CH,curlopt_returntransfer,1);
curl_setopt($ CH,curlopt_timeout,1);
结果= curl_exec美元($ CH);
curl_close($ CH);
返回$结果;
}
这段代码的关键是提供一个超时,这是只有1秒,也就是说,卷曲发出请求,是否接收到返回的内容,它会在1秒后关闭访问,所以这个函数的执行数据1。1秒,但是对于用户来说,如果需要一个数据处理应用程序,一秒钟内的等待几乎被忽略。如果您想使用更简单、更易于理解的代码,可以选择旋度来实现。

以上PHP异步:在PHP中,使用fsockopen curl实现类似的异步处理功能的方法是萧边分享给你的所有内容,希望能给大家一个参考,我希望你能支持更多。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部