快速业务通道

在php上使用fork以及socket的sample

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-26
然沒辦法設定訊息處理函數。
//設定訊息處理函數
  if(!pcntl_signal(SIGTERM, "ChildSignalFunction")) return;
  
if&
#40;!pcntl_signal(SIGTRAP, "ChildSignalFunction")) return;
//建立一個連線到VNC的Socket
  
$RemoteSocket=socket_create&
#40;AF_INET, SOCK_STREAM,SOL_TCP);
//連線到內部的VNC
  
@$RemoteConnected=socket_connect&
#40;$RemoteSocket,$IP,$Port);
  
if&
#40;!$RemoteConnected) return; //無法連線到VNC 結束
//將Socket的處理設為Nonblock,避免程式被Block住
  
if&
#40;!socket_set_nonblock($RemoteSocket)) return;
  
if&
#40;!socket_set_nonblock($ServerSocket)) return;
  
while&
#40;true)
  
&
#123;
//這邊我們採用pooling的方式去取得資料
   
$NoRecvData=false;   
//這個變數用來判別外部的連線是否有讀到資料
   
$NoRemoteRecvData=false;
//這個變數用來判別VNC連線是否有讀到資料
   
@$RecvData=socket_read&
#40;$ServerSocket,4096,PHP_BINARY_READ);
//從外部連線讀取4096 bytes的資料
   
@$RemoteRecvData=socket_read&
#40;$RemoteSocket,4096,PHP_BINARY_READ);
//從vnc連線連線讀取4096 bytes的資料
   
if&
#40;$RemoteRecvData==='''')
   
&
#123;
//VNC連線中斷,該結束嘍
    
echo"Remote Connection Close\n"
;
    return;   
   &
#125;
   
if&
#40;$RemoteRecvData===false)
   
&
#123;
/*
由於我們是採用nonblobk模式
這裡的情況就是vnc連線沒有可供讀取的資料
*/
    
$NoRemoteRecvData=true
;
//清除掉Last Errror
    
socket_clear_error&
#40;$RemoteSocket);
   
&
#125;
   
if&
#40;$RecvData==='''')
   
&
#123;
//外部連線中斷,該結束嘍
    
echo"Client Connection Close\n"
;
    return;
   &
#125;
   
if&
#40;$RecvData===false)
   
&
#123;
/*
由於我們是採用nonblobk模式
這裡的情況就是外部連線沒有可供讀取的資料
*/
    
$NoRecvData=true
;
//清除掉Last Errror
    
socket_clear_error&
#40;$ServerSocket);
   
&
#125;
   
if&
#40;$NoRecvData&&$NoRemoteRecvData)
   
&
#123;
//如果外部連線以及VNC連線都沒有資料可以讀取時,
//就讓程式睡個0.1秒,避免長期佔用CPU資源
    
usleep&
#40;100000);
//睡醒後,繼續作pooling的動作讀取socket
    
continue;
   &
#125;
   //Recv Data
   
if&
#40;!$NoRecvData)
   
&
#123;
//外部連線讀取到資料
    
while&
#40;true)
    
&
#123;
//把外部連線讀到的資料,轉送到VNC

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号