通过PHP CLI实现简单的数据库实时监控调度


Posted in PHP onJuly 01, 2009

要实现的功能:监控user表,若有新纪录增加,将其向user2表中添加。(实际应用上可以引深一些,例如对数据进行相关处理等)

下面是PHP代码(dbtest.php)

!#/usr/local/php/bin/php 
<?php 
mysql_connect('localhost', 'username', 'password'); 
mysql_select_db("test"); 
echo 'PID: '.posix_getpid().' '; //当前进程PID(linux下) 
$old_id = 0; 
while (1) 
{ 
$sql = "SELECT `id` FROM `user` ORDER BY `id` DESC LIMIT 1"; 
$result = mysql_query($sql); 
$item = mysql_fetch_assoc($result); 
$new_id = $item['id']; 
$values_arr = array(); 
for ($i=$new_id; $i>$old_id && $old_id!=0; $i--) 
{ 
$sql = "SELECT `name`,`age` FROM `user` WHERE `id`='{$i}' LIMIT 1"; 
$result = mysql_query($sql); 
$item = mysql_fetch_assoc($result); 
$name = $item['name']; 
$age = $item['age']; 
$values_arr[] = "('{$name}', '{$age}')"; 
} 
if (!emptyempty($values_arr)) 
{ 
$values_str = implode(',', $values_arr); 
$sql = "INSERT INTO `user2`(`name`, `age`) VALUES {$values_str}"; 
mysql_query($sql); 
} 
$old_id = max($old_id, $new_id); 
sleep(3); //3秒后进入下次循环 
}

业务流程应该没什么说的,就有几处需要注意的地方:
第一行是PHP CLI模式需要添加的命令路径,还有就是那个while(1)和sleep(3),其余都是普通的php代码写法。
通过shell命令php dbtest.php运行即可,我在虚拟机上测试,正常情况下占用率CPU 0%,内存1%。
实际应用中可以放到后台运行:
php dbtest.php &
bg 1
PS:&命令很多地方说的很不清楚,甚至错误。它只是将程序放入后台,而并没有实际运行!
顺带总结复习一下linux的前后台运行相关命令

命令      前后台    状态        使用方式

&           后台        暂停        加在命令后

bg         后台        运行        后跟作业号

fg          前台        运行        后跟作业号

Ctrl+Z   后台        暂停         (组合键)

jobs     (查看所有作业号)    命令

PHP 相关文章推荐
十天学会php之第六天
Oct 09 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
PHP session_start()问题解疑(详细介绍)
Jul 05 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
ThinkPHP控制器详解
Jul 27 PHP
linux下php上传文件注意事项
Jun 11 PHP
php封装的单文件(图片)上传类完整实例
Oct 18 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 #PHP
PHP 彩色文字实现代码
Jun 29 #PHP
php 过滤危险html代码
Jun 29 #PHP
php 图片上添加透明度渐变的效果
Jun 29 #PHP
需要发散思维学习PHP
Jun 29 #PHP
PHP HTML代码串 截取实现代码
Jun 29 #PHP
PHP 网页过期时间的控制代码
Jun 29 #PHP
You might like
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
在PWS上安装PHP4.0正式版
2006/10/09 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
PHP对象实例化单例方法
2017/01/19 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
javascript 年月日联动实现核心代码
2009/12/21 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
python实现简易云音乐播放器
2018/01/04 Python
python增加矩阵维度的实例讲解
2018/04/04 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
Python 微信之获取好友昵称并制作wordcloud的实例
2019/02/21 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
Delphi工程师笔试题
2013/09/21 面试题
产品工艺师的岗位职责
2013/11/15 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
就业推荐表导师评语
2014/12/31 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书