通过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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
windows xp下安装pear
Dec 02 PHP
安装APACHE
Jan 15 PHP
基于PHP一些十分严重的缺陷详解
Jun 03 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
php判断电子邮件是否正确方法
Dec 04 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
Yii框架分页技术实例分析
Aug 30 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读取msn上的用户信息类
2008/12/05 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
Laravel中Trait的用法实例详解
2016/03/16 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
Vue实现内部组件轮播切换效果的示例代码
2018/04/07 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
学校采购员岗位职责
2014/01/02 职场文书
个人整改方案范文
2014/10/25 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
2019教师的学习计划
2019/06/25 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
Ajax实现三级联动效果
2021/10/05 Javascript
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技