PHP7함수 유형 제한이 성능에 영향을 미치나요? 다음 기사에서는 PHP7 함수 데이터 유형 제한 설정이 성능에 미치는 영향에 대해 설명합니다. 이것이 모든 사람에게 도움이 되기를 바랍니다.
이 기사에서는 주로 간단한 스트레스 테스트를 사용하여 PHP7 함수의 데이터 유형을 제한하지 않거나 설정하는 것이 성능에 미치는 영향을 탐구합니다. 또한 두 가지 작업에서 직면한 작은 문제와 처리 방법을 공유하겠습니다. 오류가 있으면 수정해 주세요.
PHP7 함수 유형 제한
(1) 소개
- 함수 매개변수 유형 제한(반환 값, 멤버 속성 포함)은 PHP5부터 지원되었지만 PHP7에서는 지원되는 유형이 많지 않습니다: int/ 문자열 /bool/object 등
-
함수
- 잘못된 호출을 방지하려면 유형을 표시하고 특히 여러 사람이 공동으로 개발하는 경우 동일한 유형의 매개변수만 전달합니다.
추천 학습: "PHP 동영상 튜토리얼"
- 데이터 유형이 자동으로 변환되지 않는 경우 다음과 같이 물론 변환할 유형이 정상적으로 변환될 수 있다는 전제가 있습니다
- 그리고 이 글은 테스트 유형 제한이 성능에 미치는 영향
function testInt(int $intNum){ var_dump($intNum); } testInt("123"); // int(123)
- 잘못된 호출을 방지하려면 유형을 표시하고 특히 여러 사람이 공동으로 개발하는 경우 동일한 유형의 매개변수만 전달합니다.
- 참고: 매개변수와 반환 값이 설정된 유형과 일치하지 않으면 오류가 보고됩니다. 100% 확인되지 않으면 수동으로 변환해야 합니다
(2) 스트레스 테스트
-
실행 환경
- PHP 7.2.34
- Laravel 5.8
- AB 2.3
-
독립형 구성
- 모델명 MacBook Pro
- 프로세서 이름 Quad-Core Intel Core i7
- Memory 8 GB
- 총 코어 수 4
-
AB
- 스트레스 테스트는 AB(Apache Benchmark)를 사용하여 정식 스트레스 테스트가 아니기 때문에 신경쓰이는 부분만 있습니다. 종합 지표: 초당 요청 수(초당 평균 요청 수)
-
주요 매개변수
- -n 스트레스 테스트 요청 수
- -c 동시성 수
- -p 생성 시 필수 매개변수가 포함된 파일을 지정합니다. a POST 요청
- -r 오류 응답이 발생하면 종료하지 마십시오. 운영 체제에는 높은 동시성 공격에 대한 보호 조치가 있습니다(apr_socket_recv: 피어에 의한 연결 재설정)
- 프로젝트 설정 비즈니스 로직 없이 두 개의 POST 인터페이스를 설정합니다. , 미들웨어 작업 등을 다음과 같이 수행합니다.
/***** 1 普通接口 *****/ // CommonUserController public 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']); } // CommonUserModel public function createUser($sex, $age, $name, $address) { if(empty($sex) || empty($age) || empty($name)) return false; // 省略DB操作 return true; } /***** 2 类型限定接口 *****/ // TypeUserController public 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']); } // TypeUserModel public function createUser(int $age, string $name, int $sex, string $address): bool { if(empty($sex) || empty($age) || empty($name)){ return false; } // 省略DB操作 return true; }
(3) 구현
- 총 5번의 스트레스 테스트를 수행했으며 구성 및 결과는 다음과 같이 표시됩니다(전체 삭제됨):| ')
/*****第一次*****/ // 类型限定接口 rps=456.16 ab -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.12 ab -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.74 ab -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.24 ab -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.16 ab -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.21 ab -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.01 ab -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.17 ab -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.55 ab -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) 결과
- 압력 테스트는 너무 엄격하지 않고 결과는 참고용일 뿐입니다
유형 제한의 성능 향상은 예상만큼 크지 않고 매우 작습니다. 이런 글쓰기 방식을 추천합니다
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 비디오를 방문하세요! !
위 내용은 PHP7 함수 유형 제한이 성능에 영향을 미치는지 이야기해 볼까요? (테스트 토론)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

在php5中,我们可以使用fsockopen()函数来检测TCP端口。这个函数可以用来打开一个网络连接和进行一些网络通信。但是在php7中,fsockopen()函数可能会遇到一些问题,例如无法打开端口、无法连接到服务器等。为了解决这个问题,我们可以使用socket_create()函数和socket_connect()函数来检测TCP端口。

php7.0安装mongo扩展的方法:1、创建mongodb用户组和用户;2、下载mongodb源码包,并将源码包放到“/usr/local/src/”目录下;3、进入“src/”目录;4、解压源码包;5、创建mongodb文件目录;6、将文件复制到“mongodb/”目录;7、创建mongodb配置文件并修改配置即可。

解决 PHP 7.0 中插件未显示已安装问题的方法:检查插件配置并启用插件。重新启动 PHP 以应用配置更改。检查插件文件权限,确保其正确。安装丢失的依赖项,以确保插件正常运行。如果其他步骤均失败,则重建 PHP。其他可能原因包括插件版本不兼容、加载错误版本或 PHP 配置问题。

PHP8相较于PHP7在性能、新特性和语法改进、类型系统、错误处理和扩展等方面都有一些优势和改进。然而,选择使用哪个版本要根据具体的需求和项目情况来决定。详细介绍:1、性能提升,PHP8引入了Just-in-Time(JIT)编译器,可以提高代码的执行速度;2、新特性和语法改进,PHP8支持命名参数和可选参数的声明,使得函数调用更加灵活;引入了匿名类、属性的类型声明等等。

php7.0安装部署的方法:1、到PHP官网下载与本机系统对应的安装版本;2、将下载的zip文件解压到指定目录;3、打开命令行窗口,在“E:\php7”目录下运行“php -v”命令即可。

PHP服务器环境常见的解决方法包括:确保已安装正确的PHP版本和已复制相关文件到模块目录。临时或永久禁用SELinux。检查并配置PHP.ini,确保已添加必要的扩展和进行正确设置。启动或重启PHP-FPM服务。检查DNS设置是否存在解析问题。

随着互联网技术的发展,计算机编程语言也随之不断发展和更新。PHP作为一种广泛应用于Web开发领域的编程语言,在多年的发展中经历了多个版本的更新,而最新版的PHP7又在性能和稳定性上有了巨大提升。为了能更好地应用PHP编程语言,这篇文章将介绍PHP7的下载和安装教程,供初学者参考。

本地环境:redhat6.7系统。nginx1.12.1,php7.1.0,代码使用yii2框架问题:本地的web站需要用到elasticsearch服务。当php使用本地服务器搭建的elasticsearch时,本地的负载都是正常。当我使用aws的elasticsearchservice服务时,本地服务器出现负载经常过高的情况。查看nginx和php日志,发现没有异常。系统的并发连接数也不高。这时候想到我们老大给我讲的一个strace诊断工具。调试过程:查找一个php的子进程idstrace-


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
