通过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 相关文章推荐
Windows下PHP的任意文件执行漏洞
Oct 09 PHP
PHP Zip压缩 在线对文件进行压缩的函数
May 26 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
详解Yii2 之 生成 URL 的方法
Jun 16 PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
tp5 sum某个字段相加得到总数的例子
Oct 18 PHP
PHP手机号码及邮箱正则表达式实例解析
Jul 11 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
用session做客户验证时的注意事项
2006/10/09 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
JavaScript 参数中的数组展开 [译]
2012/09/21 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
js中一维数组和二位数组中的几个问题示例说明
2014/07/17 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
微信小程序导航栏滑动定位功能示例(实现CSS3的positionsticky效果)
2019/01/24 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
python编程实现归并排序
2017/04/14 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
python实现随机漫步算法
2018/08/27 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
李宁官方网店:中国运动品牌
2017/11/02 全球购物
项目考察欢迎辞
2014/01/17 职场文书
财务总监管理职责范文
2014/03/09 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
学校实习推荐信
2015/03/27 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
python3操作redis实现List列表实例
2021/08/04 Python
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers