mysql gman do_使用MySQL UDFs來調用gearman分布式任務分發系統

 2023-11-18 阅读 22 评论 0

摘要:當向表插入數據的時候,觸發執行某些任務 安裝gearman參加:http://www.ttlsa.com/html/663.html 一.安裝gearman-mysql-udf # apt-get install libmysql++-dev # wgethttps://launchpad.net/gearman-mysql-udf/trunk/0.6/+download/gearman-mysql-ud

當向表插入數據的時候,觸發執行某些任務 安裝gearman參加:

http://www.ttlsa.com/html/663.html 一.安裝gearman-mysql-udf # apt-get install libmysql++-dev # wget

https://launchpad.net/gearman-mysql-udf/trunk/0.6/+download/gearman-mysql-udf-0.6.tar.gz # tar zxvf gearman-mysql-udf-0.6.tar.gz # ./configure? --with-mysql=/usr/bin/mysql_config --libdir=/usr/lib/mysql/plugin # make # make install # mysql [codesyntax lang="sql"] mysql> CREATE FUNCTION gman_do RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_high RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_low RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_high_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_do_low_background RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> CREATE AGGREGATE FUNCTION gman_sum RETURNS INTEGER SONAME "libgearman_mysql_udf.so"; mysql> CREATE FUNCTION gman_servers_set RETURNS STRING SONAME "libgearman_mysql_udf.so"; mysql> SELECT gman_servers_set("192.168.1.60:4730,192.168.1.60:4731") as gman_servers;? //設置gearman server +-------------------------------------+ | gman_servers??????????????????????? | +-------------------------------------+ | 192.168.1.60:4730,192.168.1.60:4731 | +-------------------------------------+ mysql> create table udf_test( -> id int unsigned auto_increment primary key, -> val varchar(20) not null);? //新建表 mysql> create trigger sendmail before insert on udf_test for each row set @return=gman_do_background('MAIL','undef');? //創建觸發器,當向表udf_test插入數據時候,執行任務。 [/codesyntax] # perl -MCPAN -e shell cpan> install Gearman::Worker? //安裝Gearman::Worker模塊 cpan> install Mail::SendEasy?? //安裝Mail::SendEasy模塊 # vi WORKER_SENDMAIL.pl?? //創建worker任務 [codesyntax lang="perl"] use strict; use Mail::SendEasy ; use v5.10; use Gearman::Worker; my $worker=new Gearman::Worker; $worker->job_servers('192.168.1.60:4730'); $worker->register_function(MAIL=>\&sendmail); $worker->work while 1; sub sendmail{ my $job=shift; my $date=localtime; my $mail = new Mail::SendEasy( smtp => 'smtp.ttlsa.com' , user =>

'service@ttlsa.com' , pass => '******', ); print "$date\n"; my $status = $mail->send( from??? =>

'service@ttlsa.com' , from_title => 'ttlsa' , to????? =>

'xxxxx@qq.com' , subject => "MAIL Test $date" , msg???? => "$date" , html??? => "test $date" , ); if (!$status) { print $mail->error ;} } [/codesyntax] # perl WORKER_SENDMAIL.pl & # perl WORKER_SENDMAIL.pl &? //在后臺運行兩個worker 二.測試 1.向udf_test表插入數據 mysql> insert into udf_test value ('','a'); 2.查看是否收到郵件

96e7047edab53aec47c849b2fd6aa692.png 三.Gearman server信息 # telnet 192.168.1.60 4730 Trying 192.168.1.60... Connected to 192.168.1.60. Escape character is '^]'. status MAIL??? 0?????? 0?????? 2 說明:第一列worker名稱;第二列jobs執行數量;第三列jobs隊列數量;第四列可用worker數量

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/177754.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息