예제 #1
0
//定义根目录
define("ROOT", dirname(__FILE__) . "/");
//主队列
define('QUEUE_KEY', 'millipede:queue:' . $queue_id);
//安全队列:异常中断时候保存未完成的队列信息,重启队列后写回到主队列
define('QUEUE_KEY_SECURE', 'millipede:queue:secure:' . $queue_id);
//worker的注册信息
require './inc/register.php';
require './inc/constants.php';
require './inc/redis.php';
require './inc/mysql.php';
require './inc/memcached.php';
//worker的父类
require './worker.php';
//redis长连接
$GLOBALS['redis'] = $redis = getRedisConnect($_redis_config, true);
$GLOBALS['worker_list'] = array();
//记录队列ID
//$redis->hset('millipede:queue:ids', 'queue:'.$queue_id, 1);
$secure_data = $redis->lrange(QUEUE_KEY_SECURE, 0, -1);
//把之前异常的队列信息再次放入到队列中
if (is_array($secure_data)) {
    foreach ($secure_data as $value) {
        $redis->rpoplpush(QUEUE_KEY_SECURE, QUEUE_KEY);
    }
}
//阻塞队列
while (true) {
    $rs = $redis->brpoplpush(QUEUE_KEY, QUEUE_KEY_SECURE, 0);
    if ($rs != '') {
        //日志文件
예제 #2
0
<?php

//从网页获取图片路径,push到redis的队列
$page_url = 'http://www.moko.cc/moko/post/1.html';
$str = file_get_contents($page_url);
preg_match_all('/src2="(http:\\/\\/.*jpg)" alt/', $str, $match);
require dirname(__FILE__) . '/../inc/redis.php';
$redis = getRedisConnect($_redis_config);
define('QUEUE_KEY', 'millipede:queue:0');
foreach ($match[1] as $pic_url) {
    $queue_data = array('type' => 'cli', 'worker' => 'picspider', 'from' => 'test', 'data' => array('picurl' => $pic_url, 'time' => date('Y-m-d H:i:s')));
    if ($redis->lpush(QUEUE_KEY, json_encode($queue_data))) {
        echo '消息推送成功...', PHP_EOL;
    }
}