守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待
处理某些发生的事件。守护进程是一种很有用的进程。
Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。
同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。
Linux下的常驻进程的作用不可忽略,但这里面的问题也不能忽略,怎么启动进程,怎么结束进程,怎么在进程挂掉之后重启进程都要设计的合理。下面看一个shell控制的php常驻进程的例子。
不废话,直接捞干货,上代码,通过代码来讲解更容易理解:
#!/bin/sh
#filename test.sh #绝对定位该文件的位置,不随执行目录而变化 cd $(cd "$(dirname "$0")";pwd) readonly path=$(pwd)/ file=$1; RunFile="${path}data/${file}.run" DieFile="${path}data/${file}.die" readonly file="${path}${file}.php" if [ ! -f "$file" ]; then echo "please select a exists file" elif [ ! -f "$RunFile" ]; then
#这里进行判断如果RunFile文件不存在,则表示该进程不存在,下面启动进程
echo $$>${RunFile} while true do if [ ! -f $DieFile ]; then
#这里如果DieFile文件不存在,则表示程序继续执行,否则进入else,执行退出操作 /usr/bin/php -f ${file} touch $RunFile sleep 1 else
#如果DieFile文件存在清除RunFile和DieFile退出 if rm -rf $RunFile && rm -rf $DieFile ; then exit fi fi done else #这里是在存在RunFile的情况下试图启动该进程
oldpid=`cat $RunFile` newpid=`ps aux | grep "process.sh $1" | grep -v grep | grep "$oldpid" | awk '{print $2}'` if [[ $oldpid -eq $newpid ]]; then
#如果RunFile中的进程号和正在运行的目标进程号一致,表明一切安好^_^ echo "the process is runing now" exit else
#如果用RunFile中的进程号匹配不到正在运行的目标进程,则表示进程有问题,直接删除RunFile并结束运行的进程 echo "error situation,kill the run process and delete the run file" ps aux | grep "process.sh $1" | grep -v 'grep' | awk '{print $2}' | grep -v $$ | xargs --no-run-if-empty kill if [ $? -eq 0 ]; then rm -f $RunFile else echo $?>${path}/data/error fi fi fi
只里面有几个要强调的地方:
我用这个shell去调用php程序,这个没有局限性,这里要说明的是这种运行常驻进程的方法
在RunFile存在,但进程号对不上杀进程时(也就是红色额else所执行的地方),一定要 `grep -v $$`,作用是过滤掉当前运行的进程,要不然都被杀掉了,将后面的就不执行了
还有一个要注意的地方就是关于自动重启了
自动重启可以放在crontab中,每隔一段时间执行一次,具体情况具体对待。
crontab -e #打开当前用户日程表,添加模式 #日程表中有5个星号,f1,f2,f3,f4,f5,
#其中f1表示分,f2表示时,f3表示日,f4表示月,f5表示一个星期第几天
#*表示每分/时/日/月/周天,*/n表示每n分/时/......执行一次 */2 * * * * /root/test.sh #没2分钟执行一次
守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同,
造成不同 Unix环境下守护进程的编程规则并不一致。
需要注意,照搬某些书上的规则(特别是BSD4.3和低版本的System V)到Linux会出现错误的。
以上就是关于linux中的守护进程的内容,更多相关内容请关注PHP中文网(www.php.cn)!

phpsessionscanstorestrings, 숫자, 배열 및 객체 1.Strings : TextDatalikeUsernames.2.numbers : integorfloatsforcounters.3.arrays : listslikeshoppingcarts.4.objects : complexStructuresThatareserialized.

세션 재생은 세션 고정 공격의 경우 사용자가 민감한 작업을 수행 할 때 새 세션 ID를 생성하고 이전 ID를 무효화하는 것을 말합니다. 구현 단계에는 다음이 포함됩니다. 1. 민감한 작업 감지, 2. 새 세션 ID 생성, 3. 오래된 세션 ID 파괴, 4. 사용자 측 세션 정보 업데이트.

PHP 세션은 응용 프로그램 성능에 큰 영향을 미칩니다. 최적화 방법은 다음과 같습니다. 1. 데이터베이스를 사용하여 세션 데이터를 저장하여 응답 속도를 향상시킵니다. 2. 세션 데이터 사용을 줄이고 필요한 정보 만 저장하십시오. 3. 비 차단 세션 프로세서를 사용하여 동시성 기능을 향상시킵니다. 4. 사용자 경험과 서버 부담의 균형을 맞추기 위해 세션 만료 시간을 조정하십시오. 5. 영구 세션을 사용하여 데이터 읽기 및 쓰기 시간의 수를 줄입니다.

phpsessionsareser-side, whilecookiesareclient-side.1) sessions stessoredataontheserver, andhandlargerdata.2) cookiesstoredataonthecure, andlimitedinsize.usesessionsforsensitivestataondcookiesfornon-sensistive, client-sensation.

phpidifiesauser의 sssessionusessessioncookiesandssessionids.1) whensession_start () iscalled, phpgeneratesauniquessessionStoredInacookienamedPhpsSessIdonSeuser 'sbrowser.2) thisidallowsphptoretrievessessionDataTromServer.

PHP 세션의 보안은 다음 측정을 통해 달성 할 수 있습니다. 1. Session_REGENEREAT_ID ()를 사용하여 사용자가 로그인하거나 중요한 작업 일 때 세션 ID를 재생합니다. 2. HTTPS 프로토콜을 통해 전송 세션 ID를 암호화합니다. 3. 세션 _save_path ()를 사용하여 세션 데이터를 저장하고 권한을 올바르게 설정할 보안 디렉토리를 지정하십시오.

phpsessionfilesarestoredInTheRectorySpecifiedBysession.save_path, 일반적으로/tmponunix-likesystemsorc : \ windows \ temponwindows.tocustomizethis : 1) austession_save_path () toSetacustomDirectory, verlyTeCustory-swritation;


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

드림위버 CS6
시각적 웹 개발 도구

Dreamweaver Mac版
시각적 웹 개발 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
