通过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中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
PHP读取数据库并按照中文名称进行排序实现代码
Jan 29 PHP
php常用ODBC函数集(详细)
Jun 24 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
PHP 转义使用详解
Jul 15 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
详解php比较操作符的安全问题
Dec 03 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
安装docker和docker-compose实例详解
Jul 30 PHP
利用ajax+php实现商品价格计算
Mar 31 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
神族 Protoss 历史背景
2020/03/14 星际争霸
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
php数组删除元素示例
2014/03/21 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
js获取字符串字节数方法小结
2015/06/09 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
Python使用plotly绘制数据图表的方法
2017/07/18 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
复古服装:RetroStage
2019/05/10 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
大学生个人总结的自我评价
2013/10/05 职场文书
公务员总结性个人自我评价
2013/12/05 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
上班离岗检讨书
2014/09/10 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
出售房屋协议书范本
2014/10/06 职场文书
师德师风整改措施
2014/10/24 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
详解JVM系列之内存模型
2021/06/10 Javascript
Python爬虫入门案例之爬取二手房源数据
2021/10/16 Python