mysql主动通知redis_基于workman的timer-从内存(redis)主动推送到wxmp-mysql数据库负责初始化&持久化180310...

该博客介绍了如何使用Workerman的定时任务功能,结合MySQL和Redis,实现数据库变更主动推送到Redis,并通过微信接口发送消息。内容包括设置定时任务、查询MySQL数据、初始化Redis以及发送消息的示例代码。
摘要由CSDN通过智能技术生成

~~~

use \Workerman\Worker;

use \Workerman\Lib\Timer;

require_once '/workerman-for-win/Autoloader.php';//__DIR__ . '/Workerman/Autoloader.php';

//

require_once('class/mysql.class.php');

$db001 = new class_mysql();

//require_once('class/weixin.class.php');

//$weixin01 = new class_weixin();

// 普通的函数

function send01message01($to, $content)

{

echo '

echo 'get Here0000000000000000000000000000000';

echo 'send01message01:';

var_dump($to); echo '
';

var_dump($content);

} 普通的函数 //function send01message01($to, $content)

function send_m2message01($to, $content)

{

echo "send mail ...\n";

var_dump($to); echo '
';

require_once('class/weixin.class.php');

$weixin01 = new class_weixin();

//

$db012 = new class_mysql();

$mysql_stat01e = "SELECT `id`,`openid`,`heartbeat` FROM `b1r_user` WHERE true " ; //`heartbeat` > ". (time() - 172800); //$mysql_state = "SELECT `id`,`openid`,`heartbeat` FROM `tp_user` WHERE `heartbeat` > ". (time() - 172800);

echo $mysql_stat01e;

$resu01 = $db012->fetch_array($mysql_stat01e); //$result = $db->query($mysql_state);

echo( count($resu01) );

for($j = 0; $j < count($resu01); $j++)

{

echo 'RunHere000000000001';

$openid = $resu01[$j]["openid"];

$resu02lt = $weixin01->send_custom_message($openid, "text", $content);//$resu02lt = $weixin01->send_custom_message($openid, "news", $content);

}

//

}//function send_m2message01($to, $content)

$task = new Worker();

$task->onWorkerStart = function($task) //这里是 下面定义匿名函数:

{

$to = 'workerman@workerman.net';

$content = 'hello workerman001';

// 1(10)秒后执行发送邮件任务,最后一个参数传递true,反复运行;false,表示只运行一次

Timer::add( 1, 'send_m2message01', array($to, $content), true) ; //Timer::add( 1, 'send_mail', array($to, $content), true) ; //持续运行(常驻内存)! //false);

};//Endof: $task->onWorkerStart = function($task)

//

//

//-查mysql中的配置,需要初始化内存(redis或memcached吗?)

$mysql_stat0e01 = "SELECT * from `b1r_timetablemessag1c` "; //`id`,`openid`,`heartbeat` FROM `b1r_user` WHERE true " ; //`heartbeat` > ". (time() - 172800); //$mysql_state = "SELECT `id`,`openid`,`heartbeat` FROM `tp_user` WHERE `heartbeat` > ". (time() - 172800);

echo $mysql_state;

$resu001= $db001->fetch_array_one( $mysql_stat0e01);

var_dump($resu001);

if( 1== $resu001['flag18whether1readmysq01'] ) { //需要读mysql 进内存(redis)

$redi01s = new \Redis();

// 初始化内存中的 配置项目: //$con2config01_isHaveChange= $dat02b[0]['flag18ishave03change01'];//$dat01a[0]['flag18ishave03change01'];

//$con2config01_needPersistent= $dat02b[0]['flag18need03persistent01'];

//$redis->set('flag_isHaveChange', '1');

//$redis->set('con2config01_needPersistent',$con2config01_needPersistent);

//初始化内存中的 TimeTable 时间日程表

$redi01s->connect('127.0.0.1', 6379);

// $redi01s->auth('password');// Redis 没设置密码则不需要这行代码

$mysql_stat0e02 = "SELECT * from `b1r_timetablemessage` ";

$resu002= $db001->fetch_array( $mysql_stat0e02) ;

var_dump($resu002);

//if(null != $resu002) { //如果获取到 数据库mysql中的值

$redi01s->delete('lis_id');

$redi01s->delete('lis_title');

$redi01s->delete('lis_stat1send');

$redi01s->delete('lis_send1ts');

$redi01s->delete('lis_Stat1send');

$redi01s->delete('lis_pre1next2send1timestamp');

//

foreach( $resu002 as $k1=>$v1) {

$redi01s->rPush('lis_id', $v1['Id']);

$redi01s->rPush('lis_title', $v1['send1title']);

$redi01s->rPush('lis_Stat1send' ,$v1['stat1send']);

echo $v1['stat1send'];

$redi01s->rPush('lis_send1ts', $v1['send1timestamp']);

$redi01s->rPush('lis_pre1next2send1timestamp', $v1['pre1next2send1timestamp']);

$redi01s->rPush('lis_stat1send', $v1['stat1send']);

}//foreach( $conten01t as $k1 $v1

//

//}//if(null != $resu002)

}//if( 1== $resu001['flag18whether1readmysq01'] )

//

//

// 运行worker

Worker::runAll();

~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值