Daemon守护进程

来自技术开发小组内部wiki
跳转至: 导航搜索

模式

1 子进程模式(Daemon)

   示例 php jobs.php -m daemon -c start 
       php jobs.php -m daemon -c stop <执行两次为强制关闭>

2 定时模式(Cron)

  示例 php jobs.php -m cron -c daily    

3 测试模式(test)

  示例 php jobs.php -m init -c test -a <aid>
      php jobs.php -m init -c testProduct -a <product_id>  

子进程工作原理

pcntl_fork 可以产生子进程,使用子进程的原因是创建子进程可以1 避免主进程的内存泄漏 , 降低主进程的开销,调用开发比较容易,子进程采用函数方式调用 数据销毁比较容易2关键是 子进程数量可控制,闲时休眠,后期若请求量大的时候,数量就可以动态调整。 代码请查看daemon.php

埋点队列读取

Queue_Workers 类负责读取队列数据,并分派任务

定时任务处理

Cron_Works 专门处理任务相关的数据

一次性任务处理

Init_Works 类专门处理任务相关的数据

定时任务及用法

15 2 * * * cd /home/www/fmb.daemon/;/usr/local/php5.3/bin/php jobs.php -m cron -c daily >> /home/www/fmb.daemon/cron.log 2>&1
15 * * * * cd /home/www/fmb.daemon/;/usr/local/php5.3/bin/php jobs.php -m cron -c hour >> /home/www/fmb.daemon/cron.log 2>&1
*/15 * * * * cd /home/www/fmb.daemon/;/usr/local/php5.3/bin/php jobs.php -m cron -c 15min >> /home/www/fmb.daemon/cron2.log 2>&1
* * * * * cd /home/www/fmb.daemon/;/usr/local/php5.3/bin/php jobs.php -m cron -c min >> /home/www/fmb.daemon/cron2.log 2>&1

daemon 
cd /home/www/fmb.daemon/;/usr/local/php5.3/bin/php jobs.php -m daemon -c start>> /home/www/fmb.daemon/cron3.log &

检查产品状态

cd /home/www/fmb.daemon/;/usr/local/php5.3/bin/php jobs.php -m init -c test -a aid >> /home/www/fmb.daemon/cron3.log 2>&1
cd /home/www/fmb.daemon/;/usr/local/php5.3/bin/php jobs.php -m init -c TestProduct -a product_id >> /home/www/fmb.daemon/cron3.log 2>&1

检查旧产品最小价格

cd /home/www/fmb.dianping/public_html; /usr/bin/php index.php <product|test> cmdrun setTicketsPrice single <$aid> ;


长线游目录同步

0 2 * * * cd /home/www/fmb.dianping/public_html;/usr/local/php5.3/bin/php index.php test cmdrun longline import_product_index >> /dev/null 2>&1 
*/1 * * * * cd /home/www/fmb.dianping/public_html;/usr/local/php5.3/bin/php index.php test cmdrun longline import_product_index_increase >> /home/www/fmb.daemon/longline_import_incr.log 3>&1

更新单个产品 
cd /home/www/fmb.dianping/public_html;/usr/local/php5.3/bin/php index.php test cmdrun longline import_product_index_by_id <aid>

长线游产品状态 检查等

cd /data2/local-dev/192.168.27.12/fmb.dianping/public_html
批量更新最低价格
php index.php test cmdrun longline deal_status
2 更新单个产品最低价格及状态
php index.php test cmdrun longline check_status_cmd <打包产品id>
3 更新单个产品最低价格
php index.php test cmdrun longline set_min_price_with_big <打包产品id>
4 检查单品状态 <机票>
php index.php test cmdrun longline check_plane <单品id>
5 检查单品状态 <酒店>
php index.php test cmdrun longline check_hotel <单品id>