通过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 相关文章推荐
BBS(php &amp; mysql)完整版(八)
Oct 09 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
PHP无限分类(树形类)
Sep 28 PHP
php生成excel列序号代码实例
Dec 24 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php根据数据id自动生成编号的实现方法
Oct 16 PHP
php 三大特点:封装,继承,多态
Feb 19 PHP
php实现的错误处理封装类实例
Jun 20 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
Yii框架数据库查询、增加、删除操作示例
Oct 14 PHP
php获取是星期几的的一些常用姿势
Dec 15 PHP
PHP实现随机发扑克牌
Apr 22 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
PHP的FTP学习(四)
2006/10/09 PHP
php中文字符截取防乱码
2008/03/28 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
简单的自定义php模板引擎
2016/08/26 PHP
PHP简单实现冒泡排序的方法
2016/12/26 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
Python类定义和类继承详解
2015/05/08 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
scrapy与selenium结合爬取数据(爬取动态网站)的示例代码
2020/09/28 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
python xlsxwriter模块的使用
2020/12/24 Python
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
.NET概念性的面试题
2012/02/29 面试题
个人公开承诺书
2014/03/28 职场文书
求职自荐信的格式
2014/04/07 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
Python内置数据类型中的集合详解
2022/03/18 Python