눈에 띄지 않는 작은 트릭이라고 하지만 실제로는 일반적으로 사용되지 않는 일상적인 응용 프로그램이라고 해야 합니다. 아는 것과 사용할 수 있는 것은 별개입니다. , 그리고 그것을 연습하는 것은 또 다른 일입니다. 그리고 마스터가 되려면 탄탄한 기본 기술이 필요합니다.
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) SIGPWR31) 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+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+ 12 47) SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+ 15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-1253) 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-263) SIGRTMAX-1 64) SIGRTMAX만약에 다른 시스템을 동시에 지원하고 싶으십니까? 추가 판단을 하자면, PHP에는 PHP_OS라는 아티팩트가 있습니다.