찾다
백엔드 개발PHP 튜토리얼 拔高PHP的运行效率的方法

提高PHP的运行效率的方法

  [转]PHP的优点之一是速度很快,对于一般的网站应用,可以说是已经足够了。不过如果站点的访问量很高、带宽窄或者其它的因素令服务器产生性能瓶颈的时候,你可能得想想其它的办法来进一步提高PHP的速度了。

  1.代码优化

  (1)用i+=1代替i=i+1。符合c/c++的习惯,效率还高。

  (2)尽可能的使用PHP内部函数。自己编写函数之前要详细查阅手册,看有没有相关的函数,否则费力不讨好。

  (3)能使用单引号字符串尽量使用单引号字符串。单引号字符串的效率要高于双引号字符串。

  (4)用foreach代替while遍历数组。遍历数组时foreach的效率明显高于while循环,而且不需要调用reset函数。两种遍历方法如下:

  程序1:

reset ($arr);??

while (list($key, $value) = each ($arr)) {??

echo "Key: $key; Value: $value
n";??

}

?  程序2:

foreach ($arr as $key => $value) {??

echo "Key: $key; Value: $value
n";??

}

?  2.压缩页面

  HTTP1.1协议支持页面压缩传送,也就是说服务器把一个页面压缩传送到客户端,然后在客户端将页面解压缩再显示给客户。在服务器端有两种传 输方式,一种是页面事先已经压缩好了,传送时只要将压缩页面传送到客户端就行,这种适用于静态网页多的情况,但是对于大多数站点,动态页面比较多,这种方 法不太适合,因为很多传到客户端的页面其实是没有的,是服务器接到客户端用户请求动态产生的,所以就要求每生成一个动态页面都要在传到客户端以前先打包压 缩。从PHP的4.0.4版以后,可以在php.ini文件中增加一行配置“output_handler = ob_gzhandler”,这样每个动态生成的页面在传送到客户端之前都会进行压缩,但是根据PHP官方站点的说明,这个参数不能与 “zlib.output_compression = on”参数同时使用,因为容易引起PHP工作不正常,另外它只能压缩PHP程序的动态生成的页面,对于大量的静态页面尤其是图像文件就不行了。但是 mod_gzip模块为Apahe提供了将静态页面在传给客户端以前先压缩的功能,它的压缩比最大能到10,一般情况下可以到 3,也就是说网站的传输速率一下提高了三倍多。要使用mod_gzip还要对Apache进行相应的配置,需要在httpd.conf文件中加入一些参 数:

  mod_gzip_on Yes(模块是否生效)

  mod_gzip_minimum_file_size 1002(最小压缩文件大小)

  mod_gzip_maximum_file_size 0(最大压缩文件大小,0表示没有限制)

  mod_gzip_maximum_inmem_size 60000(最大可占用内存)

  mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (以gif结尾的文件要压缩传送)

  mod_gzip_item_include file ".txt102SINA>DOUBLE_QUOTATION

  mod_gzip_item_include file ".html102SINA>DOUBLE_QUOTATION

  mod_gzip_item_exclude file ".css102SINA>DOUBLE_QUOTATION

  3.文件缓存

  这种方法通常是针对PHP、PERL等CGI程序而言的,因为这些程序有一个共同的特征就是接到用户的请求后不是马上将结果返回给用户,而是经 过解释器解释执行后将执行结果返回给客户,这期间通常都要涉及到数据库的访问。这样就会出现一个问题,当两个用户访问同一个页面时,系统将分别对两个请求 进行操作,但事实上这两个操作可能是一模一样的,这样无形当中增加了系统的负担。所以通常的解决办法是在系统内存中开辟出一段空间,当用户第一次访问页面 后将执行结果存放在该内存中,当有用户再一次访问该页面时,系统就将页面直接从内存中调出而不需要重新解释执行,这段内存空间就叫缓存。目前流行的缓存管 理程序是Zend Technologies公司的Zend Cache。

  4. 执行系统外部命令

  PHP作为一种服务器端的脚本语言,像编写简单、或者是复杂的动态网页这样的任务,它完全能够胜任。但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功倍。

  在PHP中调用外部命令,可以用下面介绍的三种方法来实现。

5.用PHP提供的专门函数

  PHP提供了3个专门的执行外部命令的函数:system(),exec(),passthru()。

system()

  原型:string system (string command [, int return_var])

system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。

  例子:  

system("/usr/local/bin/webalizer/webalizer");

  exec()

原型:string exec (string command [, string array [, int return_var]])

  exec()函数与 system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完 整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二个参数时, 才可以用第三个参数,用来取得命令执行的状态码。

例子:

  exec("/bin/ls -l");

  exec("/bin/ls -l", $res);

  exec("/bin/ls -l", $res, $rc);

passthru()

  原型:void passthru (string command [, int return_var])

passthru()只调用命令,不返回任何结 果,但把命令的运行结果原样地直接输出到标准输出设备上。所以passthru()函数经常用来调用象pbmplus(Unix下的一个处理图片的工具, 输出二进制的原始图片的流)这样的程序。同样它也可以得到命令执行的状态码。

  例子:

header("Content-type: image/gif");

  passthru("./ppmtogif hunte.ppm");

6.用popen()函数打开进程

  上面的方法只能简单地执行命令,却不能与命令交互。但有些时候必须向命令输入一些东西,如在增加Linux的系统用户时,要调用su来把当前用户换到root才行,而su命令必须要在命令行上输入root的密码。这种情况下,用上面提到的方法显然是不行的。

popen()函数打开一个进程管道来执行给定的命令,返回一个文件句柄。既然返回的是一个文件句柄,那么就可以对它读和写了。在PHP3中,对这种句 柄只能做单一的操作模式,要么写,要么读;从PHP4开始,可以同时读和写了。除非这个句柄是以一种模式(读或写)打开的,否则必须调用pclose() 函数来关闭它。

  例子1:

$fp=popen("/bin/ls -l", "r");

  例子2:

/* PHP中如何增加一个系统用户

下面是一段例程,增加一个名字为james的用户,

root密码是 verygood。仅供参考

*/

$sucommand = "su --login root --command";

$useradd = "useradd ";

$rootpasswd = "verygood";

$user = "james";

$user_add = sprintf("%s "%s %s"",$sucommand,$useradd,$user);

$fp = @popen($user_add,"w");

@fputs($fp,$rootpasswd);

@pclose($fp);

?

?

?

  养成良好的程序风格

  在很多情况下PHP最可贵的特点也可能是它最薄弱的环节就是它的语法松散性。 PHP能够如此广泛的被使用,因为它使得许多没有经验的Web开发者能够制作出强大的应用程序,而用不着过多的考虑规划、连贯性和文档。不幸的是,正是以 上的特点,很多的PHP源代码很臃肿,很难阅读甚至无法维护。决定代码可维护性的重要因素是代码的格式和注释。一个工程的所有代码应该以贯穿始终的形式组 织。以下介绍的是如何在PHP程序中养成良好的程序代码风格。

?

  7.缩进

?

  开发者所有的代码应该完全按照缩进的方式书写。这是提高代码可读性最基本的措施。即使你没有注释你的代码,缩进对于让其他人读懂你的代码也是非常大的帮助。

?

  8.增加注释

?

  在编程时添加注释是一个好的习惯.PHP 允许在页面代码中添加注释,具体的注释方法与C语言注释语法相同,在脚本中可以加注释。可以用 "/*" 和 "*/" 来注释一段话。可用双斜杠“//”作为注释符。

?

  9.控制结构

?

  这个很大程度上取决于个人口味。我仍然可以看到很多的控制结构代码不带分支语句造成可读性非常差,如果你使用IF语句时不带分支,不但可读性变差,当其他人修改你的程序时,还会造成很多的bug。请看下例:

?

  不好的例子:

?

  if ($a == 1) echo 'A was equal to 1';

?

  这是非常难以辨认的。它能够正常工作,但是除了你之外,别人根本不会赞赏这句代码。 有改进的例子:

?

  if ($a == 1)

  echo 'A was equal to 1';

?

?

  现在至少这句代码可以读懂了,但是仍然没有很好的可维护性。如果当$a==1的时候我希望一个附加的事件发生,或者需要添加分支呢?如果后来的程序员忘记了添加大括弧或者else关键字,那么程序中将出现bug。

?

  完美的例子

?

  if (($a == 1) && ($b==2)) {

  echo 'A was equal to 1'; //很容易的可以添加其他代码

  } elseif (($a == 1) && ($b==3)) { //其他操作

  }

?

?

  请注意在if和elseif后面的空格,这会将本语句和函数调用区分开来,此外,虽然在elseif的执行程序段中没有语句,只有注释,表面上显得多余可是却给以后维护程序的程序员给予了非常方便的提示,并且非常利于添加功能。

?

  10.利用 Include 来实现功能模块化

?

  可以将常用的功能函数存于一个PHP文件,在其它PHP页中要用其中的功能时,将包含函数的PHP文件包含在调用函数的PHP文件中.这时可使用 Include 函数。具体语法为:

?

  include($FileName);

?

  使用时应该注意:

?

  1、应避免自包含,即 File1 包含 File1;在多个文件中有包含语句时,应避免间接自包含即循环包含,如File1包含File2,File2包含File3,File3包含File1.

?

  2、被包含的脚本语言的类型必须是PHP语言类型或脚本语句段。

???? http://www.zxbc.cn/html/phpjq/0908342313525_3.html
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
과대 광고 : 오늘 PHP의 역할을 평가합니다과대 광고 : 오늘 PHP의 역할을 평가합니다Apr 12, 2025 am 12:17 AM

PHP는 현대적인 프로그래밍, 특히 웹 개발 분야에서 강력하고 널리 사용되는 도구로 남아 있습니다. 1) PHP는 사용하기 쉽고 데이터베이스와 완벽하게 통합되며 많은 개발자에게 가장 먼저 선택됩니다. 2) 동적 컨텐츠 생성 및 객체 지향 프로그래밍을 지원하여 웹 사이트를 신속하게 작성하고 유지 관리하는 데 적합합니다. 3) 데이터베이스 쿼리를 캐싱하고 최적화함으로써 PHP의 성능을 향상시킬 수 있으며, 광범위한 커뮤니티와 풍부한 생태계는 오늘날의 기술 스택에 여전히 중요합니다.

PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?Apr 12, 2025 am 12:13 AM

PHP에서는 약한 참조가 약한 회의 클래스를 통해 구현되며 쓰레기 수집가가 물체를 되 찾는 것을 방해하지 않습니다. 약한 참조는 캐싱 시스템 및 이벤트 리스너와 같은 시나리오에 적합합니다. 물체의 생존을 보장 할 수 없으며 쓰레기 수집이 지연 될 수 있음에 주목해야합니다.

PHP의 __invoke 마법 방법을 설명하십시오.PHP의 __invoke 마법 방법을 설명하십시오.Apr 12, 2025 am 12:07 AM

\ _ \ _ 호출 메소드를 사용하면 객체를 함수처럼 호출 할 수 있습니다. 1. 객체를 호출 할 수 있도록 메소드를 호출하는 \ _ \ _ 정의하십시오. 2. $ obj (...) 구문을 사용할 때 PHP는 \ _ \ _ invoke 메소드를 실행합니다. 3. 로깅 및 계산기, 코드 유연성 및 가독성 향상과 같은 시나리오에 적합합니다.

동시성에 대해 PHP 8.1의 섬유를 설명하십시오.동시성에 대해 PHP 8.1의 섬유를 설명하십시오.Apr 12, 2025 am 12:05 AM

섬유는 PHP8.1에 도입되어 동시 처리 기능을 향상시켰다. 1) 섬유는 코 루틴과 유사한 가벼운 동시성 모델입니다. 2) 개발자는 작업의 실행 흐름을 수동으로 제어 할 수 있으며 I/O 집약적 작업을 처리하는 데 적합합니다. 3) 섬유를 사용하면보다 효율적이고 반응이 좋은 코드를 작성할 수 있습니다.

PHP 커뮤니티 : 자원, 지원 및 개발PHP 커뮤니티 : 자원, 지원 및 개발Apr 12, 2025 am 12:04 AM

PHP 커뮤니티는 개발자 성장을 돕기 위해 풍부한 자원과 지원을 제공합니다. 1) 자료에는 공식 문서, 튜토리얼, 블로그 및 Laravel 및 Symfony와 같은 오픈 소스 프로젝트가 포함됩니다. 2) 지원은 StackoverFlow, Reddit 및 Slack 채널을 통해 얻을 수 있습니다. 3) RFC에 따라 개발 동향을 배울 수 있습니다. 4) 적극적인 참여, 코드에 대한 기여 및 학습 공유를 통해 커뮤니티에 통합 될 수 있습니다.

PHP vs. Python : 차이점 이해PHP vs. Python : 차이점 이해Apr 11, 2025 am 12:15 AM

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP : 죽어 가거나 단순히 적응하고 있습니까?PHP : 죽어 가거나 단순히 적응하고 있습니까?Apr 11, 2025 am 12:13 AM

PHP는 죽지 않고 끊임없이 적응하고 진화합니다. 1) PHP는 1994 년부터 새로운 기술 트렌드에 적응하기 위해 여러 버전 반복을 겪었습니다. 2) 현재 전자 상거래, 컨텐츠 관리 시스템 및 기타 분야에서 널리 사용됩니다. 3) PHP8은 성능과 현대화를 개선하기 위해 JIT 컴파일러 및 기타 기능을 소개합니다. 4) Opcache를 사용하고 PSR-12 표준을 따라 성능 및 코드 품질을 최적화하십시오.

PHP의 미래 : 적응 및 혁신PHP의 미래 : 적응 및 혁신Apr 11, 2025 am 12:01 AM

PHP의 미래는 새로운 기술 트렌드에 적응하고 혁신적인 기능을 도입함으로써 달성 될 것입니다. 1) 클라우드 컴퓨팅, 컨테이너화 및 마이크로 서비스 아키텍처에 적응, Docker 및 Kubernetes 지원; 2) 성능 및 데이터 처리 효율을 향상시키기 위해 JIT 컴파일러 및 열거 유형을 도입합니다. 3) 지속적으로 성능을 최적화하고 모범 사례를 홍보합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

DVWA

DVWA

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

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구