关于php7:一个PHP7函数类型限定对性能的影响的测试

1. 概述本文次要是对于PHP7函数数据类型限定设定与否对性能的影响,为此,做了个简略的压测另外,分享下本人两个工作中遇到的小问题及其应答,如有谬误,恳请斧正 2. PHP7函数类型限定(1) 介绍函数参数类型限定(包含返回值、成员属性)从PHP5开始反对的,然而反对的类型不多,PHP7做了扩大:int/string/bool/object 等作用 防止谬误调用,表明类型,只能传递同类型的参数,尤其多人协同开发时如果不是能够主动转换数据类型,如下,当然前提是待转化类型能够失常转化而本文正是测试类型限定对性能的影响水平function testInt(int $intNum){ var_dump($intNum);}testInt("123"); // int(123)留神 参数、返回值如果跟设定的类型不统一时会报错,不是百分百确认的须要手动转化下(2) 压测运行环境 PHP 7.2.34Laravel 5.8AB 2.3单机配置 型号名称 MacBook Pro处理器名称 Quad-Core Intel Core i7内存 8 GB核总数 4AB 应用AB (Apache Benchmark) 进行压测,因为不是正式的压测,所以此处只关怀综合指标:Requests per second (均匀每秒申请数)主要参数 -n 压测申请数-c 并发数-p POST申请时指定所需携带参数的文件-r 遇到谬误响应不退出,操作系统有防高并发攻打保护措施 (apr_socket_recv: Connection reset by peer)设置我的项目 设置两个 POST 接口,没有业务逻辑、中间件操作等,如下/***** 1 一般接口 *****/// CommonUserControllerpublic function createUser(Request $request){ $this->validate($request, [ 'name' => 'required|string', 'age' => 'required|integer', 'sex' => ['required', Rule::in([1, 2])], ]); (new CommonUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? ''); return response()->json(['status' => 200, 'msg' => 'ok']);}// CommonUserModelpublic function createUser($sex, $age, $name, $address){ if(empty($sex) || empty($age) || empty($name)) return false; // 省略DB操作 return true;}/***** 2 类型限定接口 *****/// TypeUserControllerpublic function createUser(Request $request): JsonResponse{ $this->validate($request, [ 'name' => 'required|string', 'age' => 'required|integer', 'sex' => ['required', Rule::in([1, 2])], ]); (new TypeUserModel())->createUser($request['age'], $request['name'], $request['sex'], $request['address'] ?? ''); return response()->json(['status' => 200, 'msg' => 'ok']);}// TypeUserModelpublic function createUser(int $age, string $name, int $sex, string $address): bool{ if(empty($sex) || empty($age) || empty($name)){ return false; } // 省略DB操作 return true;}(3) 施行共进行五次压测,配置及后果展现如下 (对立删除:| grep 'Requests per second')/*****第一次*****/// 类型限定接口 rps=456.16ab -n 100 -c 10 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/type/create_user// 一般接口 rps=450.12ab -n 100 -c 10 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/common/create_user/*****第二次*****/// 类型限定接口 rps=506.74ab -n 1000 -c 100 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/type/create_user// 一般接口 rps=491.24ab -n 1000 -c 100 -p '/tmp/ab_post_data.json' -T 'application:json' http://www.laravel_type_test.com/api/common/create_user/*****第三次*****/// 类型限定接口 rps=238.43 ab -n 5000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 一般接口 rps=237.16ab -n 5000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user/*****第四次*****/// 类型限定接口 rps=209.21ab -n 10000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 一般接口 rps=198.01ab -n 10000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user/*****第五次*****/// 类型限定接口 rps=191.17ab -n 100000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/type/create_user// 一般接口 rps=190.55ab -n 100000 -c 150 -p '/tmp/ab_post_data.json' -T 'application:json' -r http://www.laravel_type_test.com/api/common/create_user(4) 后果压测不算太谨严,后果仅供参考类型限定对性能的晋升没有预期的大,很渺小,不过还是举荐这种写法

November 15, 2021 · 2 min · jiezi

关于php7:ubuntu安装高版本php72如何卸载安装php70

一、删除php的相干包及配置 sudo apt-get autoremove php7*二、删除关联 sudo find /etc -name "php" |xargs rm -rf三、革除dept列表 sudo apt purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "四、查看是否卸载洁净(无返回就是卸载实现) dpkg -l | grep php7.0而后是装置php7.0版本,因为php7.0曾经从ubuntu中的包治理移除了,所以咱们须要从新增加受权 add-apt-repository ppa:ondrej/phpapt-get updateapt-get install php7.0通过下面的命令能够装置php7.0版本,如果提醒add-apt-repository 不存在能够执行上面的命令 apt-get install software-properties-common通过以上的操作,咱们就将php版本从php7.2降到php7.0了亲测无效

July 19, 2021 · 1 min · jiezi