继续CLI模式实验,这次通过使用前面的“带延迟的无限循环”方法实现了简单的数据库实时监控和调度功能。
要实现的功能:监控user表,如果有新记录添加,就添加到user2表中。(在实际应用中可以深化,比如数据处理等。)
下面是PHP代码(dbtest.php)。复制代码如下:#/usr/local/php/bin/php?php mysql_connect(localhost ,用户名,密码);MySQL _ select _ db( test );回显 PID:。posix_getpid()。 ;//当前进程PID(在PID(linux)下$ old _ id=0;while(1){ $ SQL= SELECT id FROM user ORDER BY id desc限制1;$ result=MySQL _ query($ SQL);$ item=MySQL _ fetch _ assoc($ result);$ new _ id=$ item[ id ];$ values _ arr=array();for($ I=$ new _ id;$ i $旧标识$旧标识!=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 } );}如果(!empty empty($ values _ arr)){ $ values _ str=内爆(,,$ values _ arr);$ SQL= INSERT INTO ` user 2 `( ` name `, ` age `)VALUES { $ VALUES _ str } ;MySQL _ query($ SQL);} $old_id=max($old_id,$ new _ id);睡眠(3);//3秒后进入下一个周期}业务流程应该没什么可说的了,所以有几点需要注意:第一行是php CLI模式下需要添加的命令路径,还有那个while(1)和sleep(3),其余都是常见的php代码编写。只需通过shell命令运行PHP dbtest.php。我在虚拟机上进行了测试。正常情况下,CPU占用率为0%,内存为1%。实际操作中,可以在后台运行:PHP dbtest.php BG1PS:很多地方命令不清晰甚至错误。它只是把程序放在后台,但实际上并不运行!顺便总结回顾一下linux前台后台操作的相关命令。
命令 前后台 状态 使用方式
命令后会添加背景暂停。
作业编号后的血糖后台运行
Fg前台运行,后跟作业编号
Ctrl后台暂停(组合键)
作业(查看所有作业编号)命令