如何使用fscok实现异步调用PHP的代码案例

优能系统 程序开发 2017-11-14 14:04:52 819
摘要:Web 服务器执行一个脚本,可能几毫秒就完成,也可能几分钟都完不成。如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了。 而有的时候,我们更本不关心这些耗时的脚本的执行结果,但却还要等他执行完返回,才能继续下一步。 那么有没有什么办法,只是简单的触发调用这些耗时的脚本然后就继续下一步,让这些耗时的脚本在服务端慢慢执行?
本文章由如下广告商联合赞助发布 广告

Web 服务器执行一个脚本,可能几毫秒就完成,也可能几分钟都完不成。如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了。

而有的时候,我们更本不关心这些耗时的脚本的执行结果,但却还要等他执行完返回,才能继续下一步。 
那么有没有什么办法,只是简单的触发调用这些耗时的脚本然后就继续下一步,让这些耗时的脚本在服务端慢慢执行? 

接下来,我将使用fscokopen来实现这一功能。

PHP是支持socket编程的,就是fsockopen, 在以前做CMS的时候,我也曾经用过它做过smtp发信。
fscokopen返回一个到远程主机连接的句柄。你可以像使用fopen返回的句柄一样,对她进行写fwrite,读取fgets, fread等操作。

我们的异步PHP,主要想要的效果就是,触发一个PHP脚本,然后立即返回,留它在服务器端慢慢执行。前面我也写过一篇文章讨论过这个问题。

那么,我们就可以使用fsockopen连接到本地服务器,触发脚本执行,然后立即返回,不等待脚本执行完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function triggerRequest($url$post_data array(), $cookie array())…{
        $method "GET";  //可以通过POST或者GET传递一些参数给要触发的脚本
        $url_array parse_url($url); //获取URL信息,以便平凑HTTP HEADER
        $port = isset($url_array['port'])? $url_array['port'] : 80;
       
        $fp fsockopen

版权声明

本文仅代表作者观点,不代表本站立场。

本文系作者授权本站发表,未经许可,不得转载。

本文章由如下广告商联合赞助发布 广告

发评论 请在法律允许的范围内发表您的言论!

验证代码:
点击输入框即可显示验证码
 

以下网友发言只代表其个人观点,不代表优能系统的观点或立场。

文章排行
  • 日榜
  • 月榜
Copyright © 2017 优能cms All Rights Reserved. 备案号:苏ICP备16004379号-1