구현할 기능: user 테이블을 모니터링합니다. 새 레코드가 추가되면 user2 테이블에 추가합니다. (관련 데이터 처리 등 실제 적용은 좀 더 심도있게 가능합니다.)
다음은 PHP 코드(dbtest.php)입니다.
코드는 다음과 같습니다.
!#/usr/local /php/bin/php
mysql_connect('localhost', 'username', 'password')
mysql_select_db("test"); 🎜>echo 'PID: '.posix_getpid().' '; //현재 프로세스 PID(리눅스에서)
$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 = "`user`에서 `name`,`age`를 선택하세요. WHERE `id`='{$i}' LIMIT 1"
$result = mysql_query($sql); 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 ; 명령 경로와 while(1) 및 sleep(3)은 일반적인 PHP 코드 작성 방법입니다.
그냥 쉘 명령어인 php dbtest.php를 통해 실행해봤습니다. 일반적인 상황에서는 CPU 사용량이 0%이고 메모리는 1%입니다.
실제 애플리케이션에서는 백그라운드에서 실행할 수 있습니다.
php dbtest.php &
PS: & 명령은 여러 곳에서 명확하지 않거나 심지어 잘못되었습니다. 실제로 실행하지 않고 프로그램을 백그라운드에 두는 것뿐입니다!
그런데 리눅스의 프론트엔드와 백엔드 실행에 관련된 명령어들을 정리하고 복습해보겠습니다
명령어의 프론트엔드와 백엔드 상태 사용법
& 백그라운드 일시 정지가 추가되었습니다 명령 뒤
bg 백그라운드 실행 뒤에 작업 번호가 옵니다.
fg 포그라운드 실행 뒤에 작업 번호가 옵니다.
Ctrl+Z 백그라운드 일시 중지(키 조합)
jobs (전체 직업번호 보기) 명령어
더보기 관련 글은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!