gearman初探(二、前期准备)
gearman初探(二、前期准备)
隐形人 发表于3年前
gearman初探(二、前期准备)
  • 发表于 3年前
  • 阅读 36
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: gearman 分布式
写在前面:php发送邮件有很多方法,可以用php内置的mail()函数,可以用第三方功能完备比较成熟的邮件类,也可以用框架内的邮件发送模块,比如codeigniter,甚至可以用php的socket来发送邮件。这里用第三方的邮件类PHPMailer(推荐使用方式)
github地址:https://github.com/PHPMailer/PHPMailer
下载地址:https://github.com/PHPMailer/PHPMailer/archive/master.zip
解压后进入文件夹,在根目录下新建一个sendmail.php,写入代码
<?php
require 'PHPMailerAutoload.php';
$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.qq.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'xxxxx@qq.com';                 // SMTP username
$mail->Password = 'yyyyyyy';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to

$mail->From = 'xxxxxx@qq.com';
$mail->FromName = 'Mailer';
$mail->addAddress('zzzzzz@gmail.com', 'Joe User');     // Add a recipient

$mail->WordWrap = 50;                                 // Set word wrap to 50 character
$mail->isHTML(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}
?>
$mail->Username和$mail->From 填上你自己的登录邮箱名,$mail->Password是你的登录邮箱密码,$mail->addAddress填写你要发送的目标邮箱即可。
然后在控制台执行(首先要保证你的系统里已经安装了php,^_^)
#php ./sendmail.php

回车后光标一直闪烁,控制台不会响应你的任何动作,这说明程序被阻塞,后台正在进行邮件发送呢。过了许久,邮件发送完毕,程序继续执行,这时候控制台才显示Message has been sent字样,说明邮件发送成功,脚本执行完毕。

现在我们拿出重量级的gearman进行异步计算,也就是说将耗时的邮件发送任务提交给后台进行,程序即刻返回去响应用户的动作,不阻塞用户的请求,提升用户体验,如果任务繁重,还可以分布到多台任务机上进行计算,完成分布式计算和负载均衡的目标。

由于我们使用的语言是PHP,所以安装Gearman PHP 扩展以便Client API 和 Worker API能够正常工作。

gearman PHP扩展属于pecl库里的一个项目,到其官网上下载最新版的源码:http://pecl.php.net/get/gearman-1.1.2.tgz
下载解压后进入源码目录
#cd ~/下载
#tar -zxvf gearman-1.1.2.tgz
#cd ./gearman-1.1.2
#phpize
#./configure
#make && make install

编译好的模块gearman.so会放在/usr/lib/php/modules/中

这个时候如果你写一段这样php脚本,命名为test.php,然后运行它

<?php
echo gearman_version():
?>
#php ./test.php

会报这样的错误:PHP Fatal error: Call to undefined function gearman_version()

这是因为此时还没有加载gearman.so扩展。我们现在给PHP 加上这个扩展即可。

#vim /etc/php.ini

打开php配置文件,在文件的底部加上一行 extension = gearman.so

此时再运行那段代码 显示

1.1.12

说明加载成功,php和gearmand的桥梁已经架设完毕。 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 67
博文 17
码字总数 18605
×
隐形人
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: