<?php
class iwanttolive extends Man\Core\SocketWorker
{
/**
* 確定包是否完整 return 0:完整 return X:還有X字節(jié)沒有接收完
*/
public function onStart()
{
echo'啟動';
global $suoyoushuju;
$suoyoushuju=array();
}
public function dealInput($buffer)
{
// 如果最后一個字符是\n代表數(shù)據(jù)讀取完整,返回0
if($buffer === "\n")
{
return 0;
}
// 說明還有請求數(shù)據(jù)沒收到,但是由于不知道還有多少數(shù)據(jù)沒收到,所以只能返回1,因為有可能下一個字符就是\n
return 1;
}
/**
* 處理業(yè)務,當客戶端數(shù)據(jù)接收完畢后觸發(fā)(這里只是將客戶端發(fā)來的字符串直接會寫到客戶端)
*/
public function dealProcess($buffer)
{
// $bufferss=str_replace("\n","",$buffer);
$bufferss=trim($buffer);
global $suoyoushuju;
$fanhui=array();
array_push($suoyoushuju,$bufferss);
echo '初始化所有數(shù)據(jù)';
print_r($suoyoushuju);
$ww=explode('&',$bufferss);
$www=$ww;
foreach ($suoyoushuju as $value) {
echo '索引'.$www;
echo '搜索范圍'.$value;
if(strpos($value, $www)!=-1)
{
array_push($fanhui,$value);
echo'符合條件的放入$fangzhu數(shù)組';
print_r($fanhui);
}
else
{
echo '沒搜索到相應數(shù)據(jù)';
}
}
return $this->sendToClient$fanhui);
}
}
?>
比方說每次客戶端發(fā)送字符串給服務端 1234&few
服務端接收后放到$suoyoushuju
然后來遍歷$suoyoushuju 是否包含1234 如果有 就添加到$fanhui 這個再發(fā)回客戶端
上面代碼我運行了下。。。
明顯沒按照我的邏輯么第一次還會運行初始化 第二次發(fā)送就沒有了。。。
你的程序中有兩處錯誤
if(strpos($value, $www)!=-1)
strpos 永遠不會返回-1,返回值只有可能false或者不小于0的整數(shù)
return $this->sendToClient$fanhui);
這句有語法錯誤
并且sendToClient參數(shù)只能是字符串,否則會報錯
上面兩個錯誤解決后通過telnet測試(我開的是7473端口)運行結果如下
telnet 127.0.0.1 7473
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
1234&few
array (
0 => '1234&few',
)1234&few
array (
0 => '1234&few',
1 => '1234&few',
)1234&few
array (
0 => '1234&few',
1 => '1234&few',
2 => '1234&few',
)
結果應該是你預期的
<?php
class iwanttolive extends Man\Core\SocketWorker
{
/**
* 確定包是否完整 return 0:完整 return X:還有X字節(jié)沒有接收完
*/
public function onStart()
{
echo'啟動';
global $suoyoushuju;
$suoyoushuju=array();
}
public function dealInput($buffer)
{
// 如果最后一個字符是\n代表數(shù)據(jù)讀取完整,返回0
if($buffer === "\n")
{
return 0;
}
// 說明還有請求數(shù)據(jù)沒收到,但是由于不知道還有多少數(shù)據(jù)沒收到,所以只能返回1,因為有可能下一個字符就是\n
return 1;
}
/**
* 處理業(yè)務,當客戶端數(shù)據(jù)接收完畢后觸發(fā)(這里只是將客戶端發(fā)來的字符串直接會寫到客戶端)
*/
public function dealProcess($buffer)
{
// $bufferss=str_replace("\n","",$buffer);
$bufferss=trim($buffer);
global $suoyoushuju;
$fanhui=array();
array_push($suoyoushuju,$bufferss);
echo '初始化所有數(shù)據(jù)';
print_r($suoyoushuju);
$ww=explode('&',$bufferss);
$www=$ww;
foreach ($suoyoushuju as $value) {
echo '索引'.$www;
echo '搜索范圍'.$value;
if(strpos($value, $www)!=false)
{
array_push($fanhui,$value);
echo'符合條件的放入$fangzhu數(shù)組';
print_r($fanhui);
}
else
{
echo '沒搜索到相應數(shù)據(jù)';
}
}
return $this->sendToClient(json_encode($fanhui));
}
}
?>
還是不行
啟動啟動啟動啟動啟動初始化所有數(shù)據(jù)
Array
(
=> 2134&dw
)
索引2134搜索范圍2134&dw符合條件的放入$fangzhu數(shù)組
Array
(
=> 2134&dw
)
初始化所有數(shù)據(jù)
Array
(
=> 2134&dw
=> 12345&fe
)
索引12345搜索范圍2134&dw符合條件的放入$fangzhu數(shù)組
Array
(
=> 2134&dw
)
索引12345搜索范圍12345&fe符合條件的放入$fangzhu數(shù)組
Array
(
=> 2134&dw
=> 12345&fe
)
為什么第二次 初始化所有數(shù)據(jù)這個不會運行了
效果也是錯的
輸入12345&fe 應該是
array
(
=> 12345&fe
)
索引12345搜索范圍12345&fe符合條件的放 如
=> 2134&dw 這個2134明顯沒符合條件怎么也放入了