这是我的一个技术很好的朋友写的,要我发表在我的博客上可让php爱好者的读者和爱好php学习的朋友们参考参考.
案例:PHP语言
某SNS社区,在系统里,用户给自己的好友(好友数量上百)发送邮件,每封邮件内容不一,发送后提示发送完毕!
常用PHP写法
sendmail.php
<?php
$count=count($emailarr);//$emailarr数组为好友的邮件地址
for($i=0;$i<$count;$i++)
{
sendmail(.....);//发送邮件
}
echo ''发送完毕';
?>
假设该次发送100封邮件。本次操作会出现什么结果呢?
用户体验:用户等待->发送数十封邮件出去->系统超时返回错误信息
本次操作由于需要发送大量的邮件,导致php执行时间过长,用户烦躁的等待。当apache或者nginx等待超过允许执行时间,返回超时错误。这个时候用户不明确本次操作到底成功与否,到底发出了几封邮件。
我们可以看出该代码用户体验极差,并且不能够顺利完成任务。
那应该怎么操作呢?
这里提到一个概念,异步执行
用户体验:用户等待->发送完毕
朋友们就会问,怎么缺少发信环节?
OK,发信环节就在用户提交请求的时候,把发信任务转给了一个单独处理发信的php程序处理了,当用户看见“发送完毕”的时候其实信还没发送完,这个时候,发信程序正在后台努力的工作着,一封一封的向外发送
sendmail.php
<?php
$domain="www.***.com";
$url="/system_mail.php";
$par="email=".implode(',',$emailarr)."&........";
$header = "POST $url HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($par) . "\r\n\r\n";
$fp = @fsockopen ($domain, 80, $errno, $errstr, 30);
fputs ($fp, $header . $par);
fclose($fp);
echo ''发送完毕';
?>
system_mail.php
<?php
ini_set("ignore_user_abort",true);
ignore_user_abort(true);//此处的代码需要php.ini开启相关的选项,保证php执行不超时的,不明白,参考我的另一篇文章 “关闭浏览器后,php脚本会不会继续运行”
/*
获取email地址,发信,此处为发信代码
*/
?>
好了,改成异步方式后,用户提交信息,可以立即得到结果“发送完毕”。信呢,会在后台一封一封的发送,直到发送完毕
本文来源于php爱好者 http://www.phplover.cn/ , 原文地址:http://www.phplover.cn/post/phpyibugongzuotishengyonghutiyan.html
分享到:
相关推荐
在PHP中实现异步数据调用是解决长时间运行任务、提高程序执行效率和用户体验的关键。由于PHP不支持原生的多线程,开发者通常利用异步执行的技术来模拟并发处理,使得用户界面能够快速响应,而后台任务则在后台静默...
总结起来,"PHP+AJAX异步调用三级联动"是一种常见的Web交互功能,它结合了PHP的服务器处理能力和AJAX的异步通信特性,提供了流畅的用户体验。理解和掌握这一技术对于任何Web开发者来说都是至关重要的。
对于需要进行大量后台任务处理的场景,尤其是涉及到发送邮件等耗时操作时,使用异步调用技术可以有效地改善用户体验,并提高服务器资源的利用率。 需要注意的是,尽管PHP本身不支持多线程,但通过HTTP请求的多线程...
在PHP编程中,异步执行是一项关键技能,它允许服务器在处理其他请求的同时进行某些耗时操作,提高系统的响应速度和用户体验。标题提到的“4种PHP异步执行的常用方式”是本文将深入探讨的核心内容。除了大家熟知的...
"php异步操作类库"是PHP编程中的一个重要主题,它涉及到如何在PHP应用中实现非阻塞的异步处理,以提高应用程序的性能和响应速度。在传统的PHP执行模式下,程序是同步的,即一个任务执行完毕后才会进行下一个任务,这...
在本文中,我们将深入探讨如何在PHP中实现异步调用,以便提高程序执行效率和用户体验。异步调用允许后台程序在用户无需等待的情况下独立运行,这对于处理耗时的任务,如发送大量邮件,尤为有用。 传统的HTTP协议是...
本文将深入讲解如何使用纯JavaScript编写AJAX异步调用,并实现回调函数处理返回的数据,同时涉及XML的XSL转换。 一、AJAX基础 1. 创建XMLHttpRequest对象:在JavaScript中,我们需要首先创建一个XMLHttpRequest...
它通过在后台与服务器进行少量数据交换,使网页实现局部刷新,极大地提升了用户体验。在PHP环境中,Ajax可以配合服务器端的PHP脚本实现动态数据交互。** ### 1. Ajax基础原理 Ajax的核心是JavaScript对象...
这种方式可以提高程序的响应性,并且对于优化资源使用、改善用户体验方面有着重要价值。文章中介绍的几种PHP异步执行的常用方式包括使用AJAX技术请求服务器、使用popen()函数、利用CURL扩展和采用fsockopen()函数,...
异步加载数据意味着不需要刷新整个页面,就能更新数据,提高用户体验。 在本教程中,我们使用PHP作为服务器端编程语言,jQuery用于简化JavaScript的开发和进行异步HTTP请求(AJAX),MySQL作为数据库存储数据。整个...
总之,jQuery异步无刷新删除是通过AJAX技术实现的,它提高了Web应用的用户体验。通过前台JS调用后台删除方法,我们可以轻松地完成删除操作,同时保持页面的实时更新,而不必重新加载整个页面。这样的功能在诸如博客...
此外,为了提高用户体验,开发者还需要考虑到在异步请求失败时给用户合适的反馈信息。 总结来说,解决PHP中异步调用获取数据时出现的错误c00ce56e,关键是确保数据传输过程中的编码格式被正确设置。通过在PHP脚本的...
本文将深入探讨如何在HTML页面中通过JavaScript调用PHP代码,以实现局部刷新功能,从而提高用户体验。我们将主要关注以下几个方面: 1. **HTML基础**:HTML(超文本标记语言)是网页的基础结构,用于定义网页内容和...
它强调了如何通过AJAX实时检查用户输入的有效性和可用性,避免了不必要的页面刷新,提高了用户体验。同时,这也是一种常见的防止重复用户名注册的前端验证方法。通过实践这个例子,开发者可以深入理解AJAX的工作机制...
本教程将探讨如何使用AJAX和PHP实现图片的异步上传,这样可以提高用户体验,因为用户无需刷新整个页面即可完成上传操作。 一、AJAX简介 AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个网页的情况下,...
### js+php实现静态页面...这种方法不仅可以提高用户体验,还可以降低服务器的负载。对于那些需要频繁更新用户状态的静态页面而言,这是一个非常实用的解决方案。希望本文能为从事Web开发的技术人员提供有价值的参考。
在Web开发过程中,为了提高网站性能及用户体验,很多开发者会选择将部分页面转换为静态HTML页面。这种方式虽然能够有效降低服务器负担,但对于涉及到用户登录状态的判断与展示则变得较为复杂。本文将详细介绍如何...
比如,当用户触发一个操作(如点击按钮),`index.php`会创建一个`AsynHandle`对象,然后调用它的`loadData()`方法来异步获取数据。这个方法内部可能使用了`pcntl_fork()`创建子进程,或者利用像`ReactPHP`、`Swoole...
总之,通过Yii2 Console集成Swoole,我们可以充分利用Swoole的异步能力,将耗时的注册邮件发送和短信通知任务放到后台执行,提升系统的响应速度和用户体验。这个过程涉及到Yii2 Console命令的创建、Swoole服务器的...