PHP异步执行的常用方式常见的有以下几种,可以根据各自优缺点进行选择:
1.客户端页面采用AJAX技术请求服务器
优点:最简单,也最快,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或者,嵌入一个img标签,src指向要执行的耗时脚本。
缺点:一般来说Ajax都应该在onLoad以后触发,也就是说,用户点开页面后,就关闭,那就不会触发我们的后台脚本了。
而使用img标签的话,这种方式不能称为严格意义上的异步执行。用户浏览器会长时间等待php脚本的执行完成,也就是用户浏览器的状态栏一直显示还在load。
当然,还可以使用其他的类似原理的方法,比如script标签等等。
2.popen()函数
该函数打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。
所以可以通过调用它,但忽略它的输出。使用代码如下:
优点:避免了第一个方法的缺点,并且也很快。
缺点:这种方法不能通过HTTP协议请求另外的一个WebService,只能执行本地的脚本文件。并且只能单向打开,无法穿大量参数给被调用脚本。并且如果,访问量很高的时候,会产生大量的进程。如果使用到了外部资源,还要自己考虑竞争。
3.CURL扩展
CURL是一个强大的HTTP命令行工具,可以模拟POST/GET等HTTP请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。代码如下:
- $ch = curl_init();
- $curl_opt = array(CURLOPT_URL,'http://www.example.com/backend.php',
- CURLOPT_RETURNTRANSFER,1,
- CURLOPT_TIMEOUT,1,);
- curl_setopt_array($ch, $curl_opt);
- curl_exec($ch);
- curl_close($ch);
缺点:如你问题中描述的一样,由于使用CURL需要设置CUROPT_TIMEOUT为1(最小为1,郁闷)。也就是说,客户端至少必须等待1秒钟。
4.fscokopen()函数
fsockopen支持socket编程,可以使用fsockopen实现邮件发送等socket程序等等,使用fcockopen需要自己手动拼接出header部分
可以参考: http://cn.php.net/fsockopen/
使用示例如下:
- $fp = fsockopen("www.34ways.com",80, $errno, $errstr,30);
- if(!$fp){
- echo "$errstr ($errno)<br />\n";
- }else{
- $out ="GET /index.php / HTTP/1.1\r\n";
- $out .="Host: www.34ways.com\r\n";
- $out .="Connection: Close\r\n\r\n";
- fwrite($fp, $out);
- /*忽略执行结果
- while (!feof($fp)) {
- echo fgets($fp, 128);
- }*/
- fclose($fp);
- }
所以总结来说,fscokopen()函数应该可以满足您的要求。可以尝试一下。http://pan.baidu.com/s/1kWTnh
相关推荐
除了大家熟知的通过Ajax实现异步,还有其他几种方法,下面将逐一介绍。 1. **利用cURL库** cURL是一个强大的传输协议接口,可以用于发送HTTP请求。通过设置`CURLOPT_TIMEOUT`选项为1秒,虽然客户端需要等待至少1秒...
文章中介绍的几种PHP异步执行的常用方式包括使用AJAX技术请求服务器、使用popen()函数、利用CURL扩展和采用fsockopen()函数,下面将详细介绍每一种方法的实现原理、优缺点和使用场景。 1. AJAX技术请求服务器 AJAX...
此外,还有其他几种PHP异步执行的方法,例如: 1. **使用命令行接口(CLI)**:通过在命令行中启动PHP脚本,使其独立于Web服务器运行。 2. **利用Gearman或RabbitMQ等消息队列系统**:将任务放入队列,由后台worker...
在讨论PHP异步执行方法时,我们首先需要认识到PHP本身并不是一个多线程的语言。它不支持像Java或Python中那样的原生多线程编程模型。不过,PHP社区已经开发出了多种策略来模拟多线程行为,通过这些策略可以实现程序...
PHP本身并不直接支持多线程,但我们可以利用几种方法实现异步调用: 1. **AJAX 技术**: - AJAX(Asynchronous JavaScript and XML)允许前端页面在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容。在...
AJAX和PHP的结合可以实现以下几种常见效果: 1. **表单无刷新提交**:用户填写表单后,通过AJAX发送数据到PHP,PHP验证数据并处理,然后返回反馈信息,无需刷新页面,用户可以即时看到结果。 2. **实时搜索**:...
这是一种基于请求和响应模型的协议。浏览器通过 URL 向服务器发起请求,Web 服务器接收到请求,执行一段程序,然后做出响应,发送相应的html代码给客户端。...经过试验,总结出来几种方法,和大家sh
7. PHP网络编程技巧:异步编程是网络编程中的一项重要技能,掌握PHP异步编程可以帮助开发者编写出更为高效、稳定的网络应用程序。 8. PHP其他知识拓展:文中提到的《PHP扩展开发教程》、《PHP网络编程技巧总结》等...
而AJAX(Asynchronous JavaScript and XML)则是一种前端技术,允许浏览器与服务器进行异步数据交换,使页面可以在不重新加载的情况下更新部分内容。 **创建(Create)操作**: 当用户提交新数据时,AJAX可以发送一...
4. **协程(Coroutine)**:Swoole引入了协程概念,这是一种轻量级的并发模型,无需手动管理线程和进程,而是通过yield和resume控制执行流程,简化了异步编程的复杂性。 5. **定时器(Timer)**:Swoole提供定时器...
PHP异步执行的常用方式包括但不限于以下几种: 1. AJAX技术:在客户端页面中嵌入AJAX调用或者使用img标签src指向执行的脚本。这种方法简单快捷,服务器端不需要额外的处理。但存在无法实时触发执行的问题,且用户在...
首先,PHP Swoole是一个高性能的PHP异步编程框架,它通过异步非阻塞的方式,能够提高服务器的并发处理能力。使用PHP Swoole可以方便地实现Web服务器、异步任务处理和协程网络编程等。而Redis是一个开源的、使用ANSI ...
2. **初始化请求**:通过`open()`方法设置HTTP请求的类型(GET或POST)、URL和是否异步执行。例如,`xhr.open('GET', 'example.php', true)`。 3. **设置回调函数**:使用`onreadystatechange`事件监听状态变化。当...
这里介绍几种不同的方法,每种方法都有其优缺点,可以根据实际项目需求和环境选择合适的方法。 1. **cURL方法一**: 这个方法使用cURL库来发起一个HTTP HEAD请求,通过`CURLOPT_NOBODY`设置为1来避免下载整个文件...
PHP是一种开源的服务器端脚本语言,广泛用于Web开发,可以嵌入到HTML中执行。它的主要功能包括: 1. 处理表单数据:接收用户通过HTML表单提交的信息。 2. 生成动态网页:根据服务器端的计算结果生成HTML内容。 3. ...
PHP本身并不直接支持像其他服务器端语言(如Node.js的setTimeout或setInterval)那样的内置定时器功能,但它可以通过几种不同的方法实现类似的功能。这些方法主要依赖于CLI(命令行接口)环境、cron jobs或者使用第...
这个名为"几种语言实现短信接口demo.rar"的压缩包包含了一组实用的示例代码,展示了如何在不同的编程语言中实现短信发送功能。下面我们将深入探讨其中涉及的Java、C#、PHP和Python这四种语言的短信接口实现方法。 ...
在ExtJS4中实现树结构的异步加载,主要涉及以下几个关键概念: 1. **TreeStore**: TreeStore是树结构的数据源,它负责管理与服务器之间的数据通信。对于异步加载,我们需要配置TreeStore,设置`autoLoad`为`false`...
2. 配置请求:设置请求方法(GET或POST)、URL(指向PHP脚本的路径)、以及是否异步执行。 3. 发送请求:调用XMLHttpRequest对象的open()和send()方法,将数据发送到服务器。 4. 监听响应:通过onreadystatechange...
一种脚本执行方法可能涉及以下几个关键点: 1. **预处理阶段**:在执行脚本之前,可能需要进行语法分析、词法分析,确保脚本符合特定的语言规范。 2. **解释执行**:脚本不经过编译直接由解释器逐行执行,这在动态...