首页 > PHP > PHP守护Linux/Unix进程

PHP守护Linux/Unix进程

2009年03月29号
查看评论 发表评论 1,123次浏览

  继续在我们的主目录下:/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端口进行通信。

页面: 1 2 3

类别PHP 标签
  1. pink balenciaga bag
    发表于 2010年06月18号 08时41分54秒 | 1楼

    i really enjoyed your post.

  2. puma future cat
    发表于 2010年06月21号 18时30分04秒 | 2楼

    ….interesting….

  3. Herve Leger Sale
    发表于 2010年06月22号 09时31分33秒 | 3楼

    Good grief!

  4. mbt lami
    发表于 2010年06月23号 10时52分34秒 | 4楼

    Thankyou for all your inspiration and for the goodness you spread.

  5. prada handbags
    发表于 2010年06月30号 11时10分59秒 | 5楼

    I have followed this one-year process through your editorials and articles. Thank you for your clear and reasonable position.

  6. Cheap Fake Mont Blanc Watches
    发表于 2010年07月02号 19时54分16秒 | 6楼

    it is such a colorful description.

  7. lebron shoes
    发表于 2010年07月19号 20时03分04秒 | 7楼

    this will be amazing

  8. 2010 New Herve Leger Dress
    发表于 2010年07月23号 10时18分30秒 | 8楼

    your words are just food for the soul! Fantastic!

  1. 目前没有通告