通过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连接Oracle for NT 远程数据库
Oct 09 PHP
php 获得汉字拼音首字母的函数
Aug 01 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
PHP实现多图片上传类实例
Jul 26 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
php获取网站根目录物理路径的几种方法(推荐)
Mar 04 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
详细解读php的命名空间(一)
Feb 21 PHP
Yii2框架中一些折磨人的坑
Dec 15 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
php实现websocket实时消息推送
2018/03/30 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
JS动态给对象添加事件的简单方法
2016/07/19 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
Python遍历指定文件及文件夹的方法
2015/05/09 Python
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
Python实现处理逆波兰表达式示例
2018/07/30 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
中东奢侈品市场:Coveti
2019/05/12 全球购物
中班开学寄语
2014/04/04 职场文书
物流管理专业推荐信
2014/09/06 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
货款欠条范本
2015/07/03 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python