通过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中常用数组处理方法实例分析
Aug 30 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
apache mysql php 源码编译使用方法
May 03 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
深入php socket的讲解与实例分析
Jun 13 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
PHP扩展开发入门教程
Feb 26 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
php 数组随机取值的简单实例
May 23 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
Mar 14 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
php下的原生ajax请求用法实例分析
Feb 28 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面向对象分析设计的经验原则
2008/09/20 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
Yii2中事务的使用实例代码详解
2016/09/07 PHP
javascript 写类方式之五
2009/07/05 Javascript
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
JavaScript实现鼠标经过表格某行时此行变色
2020/11/20 Javascript
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
python判断变量是否为列表的方法
2020/09/17 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
HTML5 weui使用笔记
2019/11/21 HTML / CSS
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
股东协议书范本2016
2016/03/21 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技