PHP处理emoji表情
function filterEmoji($str) {
$str = preg_replace_callback( '/./u', function (array $match) {
return strlen($match[0]) >= 4 ? '' : $match[0]; }, $str);
return $str;
}
国内随机IP生成
<?php
$n = 1;
if (!empty($_GET) && intval($_GET['c']) > 0 ) {
$n = intval($_GET['c']);
}
function getIp()
{
$ip_long = array(
array('607649792', '608174079'), // 36.56.0.0-36.63.255.255
array('1038614528', '1039007743'), // 61.232.0.0-61.237.255.255
array('1783627776', '1784676351'), // 106.80.0.0-106.95.255.255
array('2035023872', '2035154943'), // 121.76.0.0-121.77.255.255
array('2078801920', '2079064063'), // 123.232.0.0-123.235.255.255
array('-1950089216', '-1948778497'), // 139.196.0.0-139.215.255.255
array('-1425539072', '-1425014785'), // 171.8.0.0-171.15.255.255
array('-1236271104', '-1235419137'), // 182.80.0.0-182.92.255.255
array('-770113536', '-768606209'), // 210.25.0.0-210.47.255.255
array('-569376768', '-564133889'), // 222.16.0.0-222.95.255.255
);
$rand_key = mt_rand(0, 9);
return $ip = long2ip(mt_rand($ip_long[$rand_key][0], $ip_long[$rand_key][1]));
}
$ips = [];
for ($i=0; $i < $n; $i++) {
$ips[] = getIp();
}
echo json_encode($ips);
?>
纯原生异步
public static function mainServerCreate(ServerManager $server,EventRegister $register)
{
// TODO: Implement mainServerCreate() method.
$tcp = $server->addServer('tcp',9501);
$tcp->registerDefaultOnReceive(new \Tcp\Parser());
$register->add($register::onWorkerStart,function ($ser,$workerId){
if($workerId == 0){
$client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
$client->on("connect", function(\swoole_client $cli) {
$cli->send("test:delay");
});
$client->on("receive", function(\swoole_client $cli, $data){
echo "Receive: $data";
$cli->send("test:delay");
sleep(1);
});
$client->on("error", function(\swoole_client $cli){
echo "error\n";
});
$client->on("close", function(\swoole_client $cli){
echo "Connection close\n";
});
$client->connect('127.0.0.1', 9501);
}
});
}
伪异步-eventLoop
利用swoole自带的事件循环,实现异步
public static function mainServerCreate(ServerManager $server,EventRegister $register)
{
// TODO: Implement mainServerCreate() method.
$tcp = $server->addServer('tcp',9501);
$tcp->registerDefaultOnReceive(new \Tcp\Parser());
$register->add($register::onWorkerStart,function ($ser,$workerId){
if($workerId == 0){
$client = new \swoole_client(SWOOLE_SOCK_TCP);
$client->connect('127.0.0.1', 9501);
//该出send是为了触发服务端主动返回消息,方便直观测试
$client->send("test:delay");
swoole_event_add($client->sock,function()use($client){
//服务端中,在Tcp Parser中,因为你发test:delay命令,是依旧会先给你返回\n,因此请做下空判定
$data = trim($client->recv());
if(!empty($data)){
var_dump('rec from ser');
$client->send("test:delay");
}
});
}
});
}
伪异步-socket select
public static function mainServerCreate(ServerManager $server,EventRegister $register)
{
// TODO: Implement mainServerCreate() method.
$tcp = $server->addServer('tcp',9501);
$tcp->registerDefaultOnReceive(new \Tcp\Parser());
$register->add($register::onWorkerStart,function ($ser,$workerId){
if($workerId == 0){
$client = new \swoole_client(SWOOLE_SOCK_TCP);
$client->connect('127.0.0.1', 9501);
//该出send是为了触发服务端主动返回消息,方便直观测试
$client->send("test:delay");
Timer::loop(100,function ()use($client){
$write = $error = array();
$read = [$client];
$n = swoole_client_select($read, $write, $error, 0.01);
if($n > 0){
$data = trim($client->recv());
if(!empty($data)){
$client->send("test:delay");
var_dump('rec:'.$data);
}
}
});
}
});
}