文章摘要:本文描述了通过php访问服务器后台进程的两种方法.

方法一: socket

PHP编译选项中需要增加--enable-sockets

<?php  
/*
 * client.php
 * 连接至服务器,发送一个HelloWorld,并等待主机回应
 */          
    $host="localhost";    //服务器地址(支持域名)
    $port=9999;        

    set_time_limit(0);    //PHP脚本运行的最大时间
    //创建一个socket
    $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) 
            or die("cannot create socket\n");
    $conn = socket_connect($socket,$host,$port) 
            or die("cannot connect server\n");
    if($conn)
    {
        echo "client connect ok!";
    }
    socket_write($socket,"hello world!") 
        or die("cannot write data\n");
    $buffer = socket_read($socket,1024,PHP_NORMAL_READ);
    if($buffer)
    {
        echo "response was:".$buffer."\n";
    }
    socket_close($socket);
?>


方法二: fsockopen

阿里云服务器不支持--enable-sockets选项,主要采用fsockopen来替代

<?php
/*
 * client.php
 * 连接至服务器,发送一个HelloWorld,并等待主机回应
 */   

    $host   = 'i.mcucode.cn';
    $port   = 9999;
    $buff   = 'Hello World';
    
    //打开SOCKET
    $fp = @fsockopen($host, $port); 
    if (!$fp) 
    {
        echo '<b>错误:</b> 无法连接到 '.$host.'<br>'; 
    }
    else
    {   
        @fputs($fp,$buff);  
        $result = @fgets($fp, 1024);
        @fclose($fp);   
        echo $result;
    }   
?>