>  기사  >  백엔드 개발  >  눈에 띄지 않는 PHP의 몇 가지 트릭

눈에 띄지 않는 PHP의 몇 가지 트릭

高洛峰
高洛峰원래의
2016-11-28 16:24:47854검색

눈에 띄지 않는 작은 트릭이라고 하지만 실제로는 일반적으로 사용되지 않는 일상적인 응용 프로그램이라고 해야 합니다. 아는 것과 사용할 수 있는 것은 별개입니다. , 그리고 그것을 연습하는 것은 또 다른 일입니다. 그리고 마스터가 되려면 탄탄한 기본 기술이 필요합니다.

str_repeat

x

php와 마찬가지로 문자열을 반복적으로 출력하는 데 사용됩니다. -r in perl 'echo str_repeat("ABC",5),"n";'

ABCABCABCABCABC

substr

이것은 다음 용도로 사용됩니다. 문자 장치 차단, 예를 들어 문자열의 첫 글자를 가로채려는 경우:

$string = 'abcdefg'

substr($string,0,1) a.하지만 이제는 익숙해졌습니다. 그런데 문자열의 길이가 7인지 판단할 때 isset($string[6])을 사용하는 것이 더 빠릅니다. 같은 방식으로 이 경험은

trim

trim을 사용하여 앞뒤 공백을 제거합니다. 시간이 오래 걸렸기 때문에 작성자는 이 작업을 수행하도록 특별히 설계되었기 때문에 %

와 같이 시작과 끝에서 원하지 않는 문자를 제거하는 매개변수 목록도 허용할 수 있을 것이라고는 예상하지 못했습니다. Trim('%abcdef%' to 제거 '%abcdef%' ,'%')

continue

이 사람은 다음 루프를 건너뛰는 데 사용됩니다. 오랫동안 저자는 3계층 루프에서 벗어나고 싶어하기 전까지는 항상 매개변수가 없다고 생각했습니다...

ini_set

네트워크 연결을 기반으로 프로그램을 작성할 때 내결함성을 고려하며 php.ini에 정의된 기본 시간은 60초입니다.

; 기반 스트림(초)

; http://php.net/default-socket-timeout

default_socket_timeout = 60

php 매뉴얼에서는 ini_set을 사용하여 php.ini의 구성을 수정해서 다음과 같이 생각했습니다.

ini_set('default_socket_timeout',6)

저자가 새로 발견한 기능을 사용할 때 내 습관은 다음과 같습니다.

var_dump(ini_set('default_socket_timeout',6));

실행 결과 프롬프트:

string(2) "60"

응? 실패? 여러 컴퓨터에서 시도해 보았지만 여전히 동일합니다. 오랫동안 조사한 끝에 마침내 PHP 매뉴얼에서 문제를 발견했습니다.

반환 값

성공하면 이전 값을 반환하고, 실패하면 FALSE를 반환합니다.

야, 매뉴얼을 너무 함부로 읽었어!

posix_kill

저는 PHP에서 nginx의 로그 회전 스크립트를 작성했습니다. PHP를 업데이트하고 nginx에 새 로그를 재생성하도록 알리기 위해 posix_kill:

posix_kill($nginx_pid,SIGUSR1)

N 머신에서 사용했습니다. 하지만 이 스크립트를 친구에게 빌려주었을 때 시스템에서는 다음과 같이 보고했습니다.

경고: posix_kill()에서는 매개변수 2가 길어야 하며 문자열이 제공되어야 합니다

함수 프로토타입: bool posix_kill ( int $pid , int $sig )

두 번째 매개변수는 true입니다. int를 제공해야 합니다. SIGUSR1이 내 컴퓨터에서는 작동하지 않지만 내 친구의 컴퓨터에서는 작동하지 않는 이유는 무엇입니까? 내 친구의 PHP 버전이 내 것보다 높습니다!

SIGUSR1에 해당하는 int를 오랫동안 온라인에서 검색했는데 값이 무엇입니까? 마침내 kill 명령을 연구했지만 실수로 입력했습니다. : kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL

5 ) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE

9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS

13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG

17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD

21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU

25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH

29) SIGINFO 30) SIGUSR1 31) SIGUSR2

위 내용은 Mac 기준인데, Linux용 SIGUSR1의 해당 값이 사실 달라서 할 말이 없네요.

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) Sigalrm 15) Sigterm

16) Sigstkflt 17 ) SIGCHLD 18) SIGSTOP 20) SIGTSTP

21) Sigtou 23) Sigurg 24) Sigxcpu 25) Z

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+ 12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+ 15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

만약에 다른 시스템을 동시에 지원하고 싶으십니까? 추가 판단을 하자면, PHP에는 PHP_OS라는 아티팩트가 있습니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.