phpsocket如何设置超时?php字符串太长怎么办?

PHP是一种通用的开源脚本语言。PHP的独特语法是C,Java,Perl和PHP自己的语法的混合。它可以比CGI或Perl更快地执行动态网页。与其他编程语言相比,用PHP创建的动态页面是通过将程序嵌入HTML文档中来执行的,其执行效率比完全生成HTML标签的CGI更高。它可以嵌入HTML中,特别适合于Web开发。那么php socket如何设置超时?php字符串太长怎么办?中培专家为您详解。

phpsocket如何设置超时?php字符串太长怎么办?_业界动态_电子商务

 php socket如何设置超时?

//如果$waitAckSec=0,则返回成功发送的字节

//如果$waitAckSec大于0,则返回发送后接收到得内容

//任何情况下,失败都返回FALSE

function sendUdp($host, $port, $buff,$waitAckSec=0) {

$socket = ($result = @socket_create(AF_INET,SOCK_DGRAM,SOL_UDP));

//发送超时1秒

socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>3, "usec"=>0 ) );

//接收超时6秒

socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>6, "usec"=>0 ) );

if($socket){

$result = @socket_sendto($socket,$buff,strlen($buff),0,$host,$port);

if($waitAckSec>0){

$result = FALSE;

$read = array($socket);

$write = NULL;

$except = NULL;

if(@socket_select($read,$write,$except,$waitAckSec)>0){

$fromHost = "";

$fromPort = 0;

@socket_recvfrom($socket,$result,4096,0,$fromHost,$fromPort);

$result = phpext_unpack($result);

if($result["needAck"] == 1){

$this->sendUdp($host, $port, $result["ackdata"]);

if(isset ($result['data']['list']) && isset ($result['data']['totalCount'])){

$list = $result['data']['list'];

$count = $result['data']['totalCount'];

while($count> count($list)){

@socket_recvfrom($socket,$result_temp,4096,0,$fromHost,$fromPort);

$result_temp = phpext_unpack($result_temp);

$this->sendUdp($host, $port, $result_temp["ackdata"]);

$list = array_merge($list,$result_temp['data']['list']);

}

$result['data']['list'] = $list;

}

}else{

@socket_recvfrom($socket,$result,4096,0,$fromHost,$fromPort);

$result = phpext_unpack($result);

if($result["needAck"] == 1){

$this->sendUdp($host, $port, $result["ackdata"]);

if(isset ($result['data']['result']) && isset ($result['data']['userID'])){

$list = $result['data']['list'];

$count = $result['data']['totalCount'];

while($count> count($list)){

@socket_recvfrom($socket,$result_temp,4096,0,$fromHost,$fromPort);

$result_temp = phpext_unpack($result_temp);

$this->sendUdp($host, $port, $result_temp["ackdata"]);

$list = array_merge($list,$result_temp['data']['list']);

}

$result['data']['list'] = $list;

}

}

}

}else{

$result = SEND_UDP_ERROR;

}

}

@socket_close($socket);

}

return $result;

}

 php字符串太长怎么办?

php字符串太长的解决办法:首先截取长度等于0或大于等于本字符串的长度,则返回字符串本身;然后如果截取长度为负数,那么截取长度就等于字符串长度减去截取长度;最后如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度。

if (! function_exists('mbSubStr')){

function mbSubStr($str, $length = 0, $append = true)

{

$str = trim($str);

$strlength = strlen($str);

if ($length == 0 || $length >= $strlength) {

return $str; //截取长度等于0或大于等于本字符串的长度,返回字符串本身

}elseif ($length < 0){ //如果截取长度为负数

$length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度

if ($length < 0) {

$length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度

}

}

if (function_exists('mb_substr')){

$newstr = mb_substr($str, 0, $length, 'utf-8');

}elseif (function_exists('iconv_substr')){

$newstr = iconv_substr($str, 0, $length, 'utf-8');

}else{

//$newstr = trim_right(substr($str, 0, $length));

$newstr = substr($str, 0, $length);

}

if ($append && $str != $newstr){

$newstr .= '...';

}

return $newstr;

}

}

以上就是关于php socket如何设置超时,以及php字符串太长怎么办的全部内容,想了解更多关于php的信息,请继续关注。

92
199
0
5

相关资讯

  1. 1、易烊千玺饰演的韦一航看着“亿羊迁徙”​泪流满面的这一幕,好治愈!2375
  2. 2、《西游降魔篇》进黄金档江苏卫视买断15年播映权3147
  3. 3、战狼3正式开机,女演员人选曝光引起争议,网友直呼为什么是她?4908
  4. 4、纪录片《知青》年底播出讲述上百位知青经历427
  5. 5、凤凰卫视回应赵普加盟传闻:“纯属谣传”4328
  6. 6、冯绍峰婚后谈对赵丽颖的称呼,用了三个字,网友:好宠溺2575
  7. 7、妈妈们的最爱《娘道》,可是为什么总觉得三观不正!1121
  8. 8、且以春光寄英魂,系列短剧《理想照耀中国》“革命时期篇”角色海报全曝光1336
  9. 9、于无声处、平地惊雷的娜娜电影!2603
  10. 10、张柏芝第三胎?工作人员并未否认,所以孩子爸爸是谁4117
全部评论(0)
我也有话说
0
收藏
点赞
顶部