ÍøÂçѧԺ w3popÉçÇø ÍøÂç×ÊÔ´ ITÐÂÎÅ

w3pop.com :: ÍøÂçѧԺ :: PHP :: ʹÓÃPHP×öLinux/UnixÊØ»¤½ø³Ì

»áÔ±µÇ½

ÕʺÅ

ÃÜÂë

»Ø´ð

¼ÇסÃÜÂë

Íü¼ÇÃÜÂë? ×¢²á

PHP
php ÎÞÏÞ·ÖÀàµÄʵ..
³£ÓÃPHP´úÂë
windowsϰ²×°ÅäÖ..
MySQLÊý¾Ý¿â½á¹¹º..
PHPʵÏÖ IP Whois..
PHP5 this,selfºÍ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
PHP error_report..
PHP °²È«¼¼ÇÉÁ¬ÔØ..
ʹÓÃPHP×öLinux/U..

ʹÓÃPHP×öLinux/UnixÊØ»¤½ø³Ì


×÷Õß:w3pop.com ·­Òë/ÕûÀí:w3pop.com ·¢²¼:2007-08-31 ä¯ÀÀ:3418 :: ::

[  ÆðÔ´ ]

Linux/UnixÏÂÊØ»¤½ø³Ì£¨Daemon£©´ó¼Ò¶¼ÖªµÀ£¬±ÈÈçÎÒÃdz£ÓõÄhttpd¡¢mysqldµÈµÈ£¬¾ÍÊdz£×¤ÄÚ´æÔËÐеijÌÐò£¬ÀàËÆÓÚ WindowsϵķþÎñ¡£Ò»°ãÊØ»¤½ø³Ì¶¼ÊÇʹÓÃC/C++À´Ð´£¬¾ÍÊÇͨ¹ýforkÉú³É×Ó½ø³Ì£¬µ±Ç°Ì¨shellϵĸ¸½ø³Ì±»É±µô£¬×Ó½ø³Ì¾Íתµ½ºǫ́ÔËÐУ¬ ΪÁ˲»ÔÚÖն˲úÉúÊä³öÐÅÏ¢£¬¾Íͨ¹ýsyslogµÈº¯ÊýÀ´Ð´ÈÕÖ¾Îļþ¡£

ÎÒÃÇÖªµÀphpÊǽű¾ÓïÑÔ£¬Í¨¹ýphpµÄ½Å±¾ÒýÇæÀ´Ö´ÐУ¬ËùÒÔÒª×ö³ÉÊØ»¤½ø³Ì±È½ÏÂé·³£¬ÎÒÃǽñÌì¾ÍÀ´½áºÏUnix/LinuxµÄÃüÁîÀ´ÊµÏÖÎÒÃÇÊØ»¤½ø³ÌµÄ¹¦ÄÜ¡£

[  Ô­Àí ]

UnixÖеÄnohupÃüÁîµÄ¹¦ÄܾÍÊDz»¹Ò¶ÏµØÔËÐÐÃüÁͬʱnohup°Ñ³ÌÐòµÄËùÓÐÊä³öµ½·Åµ½µ±Ç°Ä¿Â¼µÄnohup.outÎļþÖУ¬Èç¹ûÎļþ²»¿Éд£¬Ôò·Åµ½<Óû§Ö÷Ŀ¼>/nohup.out ÎļþÖС£ÄÇôÓÐÁËÕâ¸öÃüÁîÒÔºó£¬ÎÒÃǵÄphp³ÌÐò¾Íд³Ìshell½Å±¾£¬Ê¹ÓÃÑ­»·À´ÈÃÎÒÃǵĽű¾Ò»Ö±ÔËÐУ¬ÄÇô²»¹ÜÎÒÃÇÖÕ¶Ë´°¿ÚÊÇ·ñ¹Ø±Õ£¬¶¼Äܹ»ÈÃÎÒÃǵÄphp½Å±¾Ò»Ö±ÔËÐС£µ±È»£¬µ±ÎÒÃǵÄphp½ø³Ì±»É±»òÕßÎÒÃǵIJÙ×÷ÏµÍ³ÖØÆôÁË£¬×ÔÈ»¾Í»áÖÐÖ¹ÁË¡£

[  ¹¦ÄÜ ]

¿Ï¶¨»áÎÊ£¬ÈÃÎÒÃǵÄphp½Å±¾×öÁËÊØ»¤½ø³ÌÓÖÓÐʲôÓô¦ÄØ£¿µ±È»ÓУ¬±ÈÈç×îµäÐ͵Ä×÷Óã¬Äܹ»»ù±¾µÄÌæ´úcronµÄ¹¦ÄÜ£¬±ÈÈçÎÒÃÇÐèÒª¶¨ÆÚʵÐеÄijЩ²Ù×÷£¬ ÍêÈ«¿ÉÒÔ½»¸øËüÀ´×ö£¬²»ÔÙÐèÒªcron£¬µ±È»£¬Èç¹û·þÎñÆ÷ÖØÆô¾ÍûÓа취ÁË£¬²»¹ý£¬Ò»°ãµÄUnix·þÎñÆ÷²»ÊÇÄÇôÈÝÒ×ÖØÆôµÄ¡£ÁíÍ⣬ÎÒÃÇ»¹¿ÉÒÔ×öÒ»¸ö¼òµ¥ µÄ·þÎñÆ÷¶ËµÄ¹¦ÄÜ£¬±ÈÈç×öÒ»¸öÄܹ»Telnet¹ýÈ¥µÄ·þÎñÆ÷£¬ºÙºÙ£¬¿ÉÒÔ×ö³ÉÒ»¸öСºóÃÅ£¬²»¹ýÕâÑùʵÏÖÉÔ΢Óе㸴ÔÓ¡£

[  ʵ¼ù ]

Àý×ÓÒ»£º×Ô¶¯Éú³ÉÎļþ

ÎÒÃÇÏÖÔÚÀ´×öÁ½¸öÀý×ÓÀ´Ö¤Ã÷ÎÒÃÇÉÏÃæµÄ˵·¨¡£Ê×ÏȵÚÒ»¸öÊÇÿ¸öÈýÊ®Ãë×Ô¶¯Éú³ÉÒ»¸öÎļþ£¬ÓÀÔ¶Ö´ÐÐÏÂÈ¥¡£

Ê×±ØÐëÈ·±£²Ù×÷ϵͳÊÇUnix»òÕßLinux£¬±ÈÈç¿ÉÒÔÊÇFreeBSD¡¢Redhat¡¢Fedora»òÕßSUSEʲôµÄ¡£È»ºóÎÒÃDZØÐëÈ·±£ÎÒÃǵÄphp½Å±¾ÒýÇæÊÇÔÚ /usr/local/php/bin/php£¬¾ßÌå·¾¶¿ÉÒÔ°´ÕÕÄãʵ¼Ê·¾¶À´Ð´£¬Èç¹ûûÓнű¾ÒýÇæ£¬Çë×ÔÐа²×°¡£

±ÈÈ統ǰĿ¼ÊÇ /home/heiyeluren/£¬ÄÇôÎÒÃÇʹÓÃvi»òÕ߯äËû±à¼­Æ÷±àдһ¸ö½Ð×öphp_daemon1.phpµÄÎļþ£º
$ vi php_daemon1.php

È»ºóдÈëÈçÏ´úÂ룺
#! /usr/local/php/bin/php
<?
set_time_limit(0);
while(1)
{
@fopen("test_".time().".txt","w");
sleep(30);
}
?>

È»ºó±£´æ²¢ÇÒÍ˳övi£¬È»ºó¸³Óèphp_daemon1.phpÎļþ¿ÉÖ´ÐÐȨÏÞ£º
$ chmod +x /home/heiyeluren/php_daemon1.php

È»ºóÔÙÈÃÎÒÃǵĽű¾ÔÙºǫִ́ÐУ¬Ö´ÐÐÈçÏÂÃüÁ
$ nohup /home/heiyeluren/php_daemon1.php &

¼ÇµÃ×îºó¼ÓÉÏ & ·ûºÅ£¬ÕâÑù²ÅÄܹ»Åܵ½ºǫ́ȥÔËÐУ¬Ö´ÐÐÉÏÊöÃüÁîºó³öÏÖÈçÏÂÌáʾ£º

[1] 82480
appending output to nohup.out

Ôٻغ󳵺󽫳öÏÖshellÌáʾ·û¡£ÄÇôÉÏÃæµÄÌáʾ¾ÍÊÇ˵£¬ËùÓÐÃüÁîÖ´ÐеÄÊä³öÐÅÏ¢¶¼»á·Åµ½ nohup.out ÎļþÖУ¬Õâ¸öÉÏÃæÒѾ­½²ÁË¡£È»ºóÖ´ÐÐÉÏÃæÃüÁîºó£¬ÎÒÃÇÿ¸öÈýÊ®ÃëÔÚµ±Ç°Ä¿Â¼¾Í»á¿´µ½¶à³öÒÔtest_¿ªÍ·µÄÎļþ£¬±ÈÈ磺test_1139901144.txt test_1139901154.txtµÈµÈÎļþ£¬ÄÇô¾ÍÖ¤Ã÷ÎÒÃǵijÌÐòÒѾ­ÔÙºǫ́ÔËÐÐÁË¡£

ÄÇôÎÒÃÇÈçºÎÖÕÖ¹³ÌÐòµÄÔËÐÐÄØ£¿×îºÃ°ì·¨¾ÍÊÇÖØÆô²Ù×÷ϵͳ£¬ºÇºÇ£¬µ±È»£¬ÕâÊDz»¿ÉÈ¡µÄ£¬ÎÒÃÇ¿ÉÒÔʹÓÃkillÃüÁîÀ´É±µôÕâ¸ö½ø³Ì£¬É±½ø³Ì֮ǰ×ÔÈ»ºóÖªµÀ½ø³ÌµÄPIDºÅ£¬¾ÍÊÇProcess ID£¬Ê¹ÓÃpsÃüÁî¾ÍÄܹ»¿´µ½ÁË¡£

$ ps
PID  TT  STAT      TIME COMMAND
82374  p3  Ss     0:00.14 -bash (bash)
82510  p3  S      0:00.06 /usr/local/php/bin/php /home/heiyeluren/php_daemon1.php
82528  p3  R+     0:00.00 ps

ÉÏÃæÎÒÃÇÒѾ­¿´µ½ÁËÎÒÃǵÄphpµÄ½ø³ÌidÊÇ£º82510 £¬ÓÚÊÇÎÒÃÇÔÙÖ´ÐÐkillÃüÁ

$ kill -9 82510
[1]+  Killed                  nohup /home/heiyeluren/php_daemon1.php

¿´µ½ÕâôÌáʾ¾ÍÃ÷°×Õâ¸ö½ø³Ì±»É±ÁË£¬ÔÙps£¬¾Í»á·¢ÏÖûÓÐÁË£º

$ ps
PID  TT  STAT      TIME COMMAND
82374  p3  Ss     0:00.17 -bash (bash)
82535  p3  R+     0:00.00 ps

Èç¹ûÖ±½ÓpsÃüÁîÎÞ·¨¿´µ½½ø³Ì£¬ÄÇô¾ÍʹÓà ps & apos Á½¸ö½áºÏÃüÁîÀ´²é¿´£¬Ò»¶¨Äܹ»¿´µ½½ø³Ì¡£
ÔÙÉÏÃæµÄ»ù´¡ÉϽø³ÌÀ©Õ¹£¬Äܹ»×ö³ÉÊôÓÚ×Ô¼ºµÄcron³ÌÐò£¬ÄǾͲ»ÐèÒªcronÀ²£¬µ±È»£¬ÕâÖ»ÊÇÒ»ÖÖ·½Ê½

 
Àý×Ó¶þ£º·þÎñÆ÷¶ËµÄÊØ»¤½ø³Ì

Õâ¸öÀý×Ó¸úÍøÂçÓйأ¬´óÖ¾ÍÊÇÄ£ÄâʹÓÃphp×ö·þÎñÆ÷¶Ë£¬È»ºóÒ»Ö±ºǫ́ÔËÐУ¬´ïµ½·þÎñÆ÷¶ËDaemonµÄЧ¹û¡£

¼ÌÐøÔÚÎÒÃǵÄÖ÷Ŀ¼Ï£º/home/heiyeluren£¬±à¼­Îļþphp_daemon2.php£º

$ vi php_daemon2.php

ÊäÈëÈçÏ´úÂ루´úÂëÀ´×ÔPHPÊֲᣬÎÒ½øÐÐÁËÐÞ¸Ä×¢ÊÍ£©£º

#! /usr/local/php/bin/php
<?php
/* ÉèÖò»ÏÔʾÈκδíÎó */
error_reporting(0);

/* ½Å±¾³¬Ê±ÎªÎÞÏÞ */
set_time_limit(0);

/* ¿ªÊ¼¹Ì¶¨Çå³ý */
ob_implicit_flush();

/* ±¾»úµÄIPºÍÐèÒª¿ª·ÅµÄ¶Ë¿Ú */
$address = '192.168.0.1';
$port = 10000;

/* ²úÉúÒ»¸öSocket */
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed: reason: " . socket_strerror($sock) . "\n";
}

/* °ÑIPµØÖ·¶Ë¿Ú½øÐÐ°ó¶¨ */
if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() failed: reason: " . socket_strerror($ret) . "\n";
}

/* ¼àÌýSocketÁ¬½Ó */
if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n";
}

/* ÓÀÔ¶Ñ­»·¼à½ÓÊÜÓû§Á¬½Ó */
do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
break;
}
/* ·¢ËÍÌáʾÐÅÏ¢¸øÁ¬½ÓÉÏÀ´µÄÓû§ */
$msg = "==========================================\r\n" .
" Welcome to the PHP Test Server. \r\n\r\n".
" To quit, type 'quit'. \r\n" .
" To shut down the server type 'shutdown'.\r\n" .
" To get help message type 'help'.\r\n" .
"==========================================\r\n" .
"php> ";
socket_write($msgsock, $msg, strlen($msg));

    do {
if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
  /* ¿Í»§¶ËÊäÈëquitÃüÁîʱºò¹Ø±Õ¿Í»§¶ËÁ¬½Ó */
if ($buf == 'quit') {
break;
}
  /* ¿Í»§¶ËÊäÈëshutdownÃüÁîʱºò·þÎñ¶ËºÍ¿Í»§¶Ë¶¼¹Ø±Õ */
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
  /* ¿Í»§¶ËÊäÈëhelpÃüÁîʱºòÊä³ö°ïÖúÐÅÏ¢ */
if ($buf == 'help') {
$msg = " PHP Server Help Message \r\n\r\n".
" To quit, type 'quit'. \r\n" .
" To shut down the server type 'shutdown'.\r\n" .
" To get help message type 'help'.\r\n" .
"php> ";
socket_write($msgsock, $msg, strlen($msg));
continue;
}
/* ¿Í»§¶ËÊäÈëÃüÁî²»´æÔÚʱÌáʾÐÅÏ¢ */
$talkback = "PHP: unknow command '$buf'.\r\nphp> ";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
} while (true);

/* ¹Ø±ÕSocketÁ¬½Ó */
socket_close($sock);
?>


±£´æÒÔÉÏ´úÂëÍ˳ö¡£

ÉÏÃæµÄ´úÂë´óÖ¾ÍÊÇÍê³ÉÒ»¸öÀàËÆÓÚTelnet·þÎñÆ÷¶ËµÄ¹¦ÄÜ£¬¾ÍÊǵ±·þÎñÆ÷¶ËÔËÐиóÌÐòµÄʱºò£¬¿Í»§¶ËÄܹ»Á¬½Ó¸Ã·þÎñÆ÷µÄ10000¶Ë¿Ú½øÐÐͨÐÅ¡£

¼ÓÉÏÎļþµÄ¿ÉÖ´ÐÐȨÏÞ£º
$ chmod +x /home/heiyeluren/php_daemon2.php

ÔÚ·þÎñÆ÷ÉÏÖ´ÐÐÃüÁ
$ nohup /home/heiyeluren/php_daemon2.php &

¾Í½øÈëÁ˺ǫ́ÔËÐУ¬ÎÒÃÇͨ¹ýWindowsµÄ¿Í»§¶ËtelnetÉÏÈ¥£º

C:\>telnet 192.168.0.1 10000

Èç¹ûÌáʾ£º

ÕýÔÚÁ¬½Óµ½192.168.0.188...²»ÄÜ´ò¿ªµ½Ö÷»úµÄÁ¬½Ó£¬ ÔÚ¶Ë¿Ú 10000: Á¬½Óʧ°Ü

Ôò˵Ã÷·þÎñÆ÷¶ËûÓпªÆô£¬»òÕßÉÏÃæµÄ³ÌÐòûÓÐÕýÈ·Ö´ÐУ¬Çë¼ì²éphpÊÇ·ñ --enable-sockets ¹¦ÄÜ¡£Èç¹ûÌáʾ£º

==========================================
Welcome to the PHP Test Server.

 To quit, type 'quit'.
To shut down the server type 'shutdown'.
To get help message type 'help'.
==========================================
php>


Ôò˵Ã÷˳ÀûÁ¬½ÓÉÏÁËÎÒÃǵÄPHPдµÄ·þÎñÆ÷¶ËÊØ»¤½ø³Ì£¬ÔÚphp>Ìáʾ·ûºóÃæÄܹ»Ö´ÐÐhelp¡¢quit¡¢shutdownµÈÈý¸öÃüÁÈç¹ûÃüÁîÊäÈë²»ÊÇÕâÈý

¸ö£¬ÔòÌáʾ£º

php> asdf
PHP: unknow command 'asdf'.

Ö´ÐÐhelpÃüÁî¿ÉÒÔ»ñÈ¡°ïÖú£º

php> help
PHP Server Help Message

 To quit, type 'quit'.
To shut down the server type 'shutdown'.
To get help message type 'help'.


Õâ¸ö·þÎñÆ÷¶Ë¾Í²»½éÉÜÁË£¬¿ÉÒÔ×ÔÐÐÀ©Õ¹¡£

ɱ½ø³Ì¸úÀý×ÓÒ»ÀàËÆ¡£

[  ×ܽá ]

ͨ¹ýÒÔÉÏѧϰ£¬ÎÒÃÇÖªµÀphpÒ²¿ÉÒÔ×öÊØ»¤½ø³Ì£¬Èç¹ûÉè¼ÆµÄºÃ£¬¹¦ÄÜÒ²»á±È½ÏÇ¿´ó£¬²»¹ýÎÒÃÇÕâÀïÖ»ÊÇѧϰ¶øÒÑ£¬¿ÉÒÔ×ÔÐÐÑо¿¸üС£
±¾ÎIJο¼ÁËphpÖÐÎÄÊֲᣬ¶à¿´Êֲᣬ¶Ô×Ô¼º·Ç³£Óкô¦¡£

ÆÀÂÛ (0) All