各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
收藏本站(不迷路),每天更新好文章!
当前位置:首页 > CMS教程 > PHP

php如何处理耗时任务

管理员 2023-09-05
PHP
118

php如何处理耗时任务

内容导读

收集整理的这篇技术教程文章主要介绍了php如何处理耗时任务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2055字,纯文字阅读大概需要3分钟

内容图文

服务器的访问压力比较大时,我们可以通过负载均衡来将负载分散到多台服务器上.但有些比较耗时的请求.比如:

1. 需要连接邮件服务器,发送一封超长的HTML邮件。(推荐学习:PHP视频教程)

2. 需要对用户上传的图片进行裁剪,生成多份缩略图。

3. 需要将用户上传的文件分发到多台服务器上。

在我们的日常应用中经常遇到,用户需要等待一段时间,这个请求才能完成,在用户上传照片时,照片上传成功后,然后是裁剪,最后生成缩略图,在这么一个过程中,用户只能等待,所以对用户的体验来讲是相当不好的。

可能在用户第一次使用过后,下次就很难再让他使用这个图片的上传功能了。

那么有没有一种方法将这些处理过程放在后台慢慢运行呢?

答案是肯定的,通过分布式处理可以将这些比较耗时的任务放在后台,甚至分散到多台服务器上去处理,对于这个问题异步处理就派上了用场。

现在有很多开源的软件能实现异步通信,比如ActiveMQ、Hadoop、Gearman和MecacheMQ等,它们巧妙的将计算转移到其他服务器上,而这一切都是隐藏在API中,同时,这些机制都是跨语言的,可以用PHP来分配一个任务,然后将后台的C/C++程序来进行处理,这一切都不是什么问题。

下面通过php和Gearman来演示异步的处理过程.

一、Gearman的安装

tar zxvf gearmand-0.11.tar.gzcd  gearmand-0.11./configure --prefix=/usr/local/gearmanmakemake install

二、安装Gearman PHP extension.

 tar zxf gearman-0.6.0.tgzcd gearman-0.6.0  phpize  ./configure  make

将module目录上的gearman.so拷贝到php的module目录下,我机器的目录在/usr/lib/php5/20060613+lfs/.

cp module/gearman.so /usr/lib/php5/20060613+lfs/.

然后在php.ini中添加

extension = “gearman.so”

最后重启apache服务器.

三、启动Gearman服务

cd /usr/local/gearman/sbin./gearman -d -u root

Job的默认端口为4730,可以通过

[root@serv_1 sbin]# netstat -nl | grep 4730tcp        0      0 :::4730                     :::*                        LISTEN

是否启动.

通过bin/gearman这个工具,我们可以来体验Gearman的功能.

启动Worker:

./gearman -w -f wc -- wc -l &[1] 2547

运行 Client:

./gearman -f wc < /etc/passwd38

上面的例子中,Worker中定义了一个函数 wc,主要功能用来统计文本的行数,而client将/etc/passwd这个文件的内容传给Worker来处理,最后得出passwd有38行文本.

以上就是php如何处理耗时任务的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php如何处理耗时任务全部内容,希望文章能够帮你解决php如何处理耗时任务所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部