PHP基础知识

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);
                        }
                    }
                });
            }
        });
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值