ホームページ >バックエンド開発 >PHPチュートリアル >PHP における目立たないトリックのいくつか
目立たない小さなトリックだと言われていますが、実際には、それを知っていることと、それを使用できることは別のことです。マスターになるには、しっかりとした基本スキルが必要です
php -r 'echo str_repeat("ABC",5) に基づいて文字列を繰り返し出力します。 ),"n" ;'
ABCABCABCABCABC
substr
これは、文字デバイスをインターセプトするために使用されます。たとえば、文字列の最初の文字をインターセプトします:
$string = 'abcdefg'
substr($ string,0,1 ) で a を取得しましたが、今では $string[0] を使用することに慣れています。文字列の長さが 7 かどうかを判断する場合は、代わりに Isset($string[6]) が使用されます。同様に、isset は strlen よりも速いと言われているため、この経験は
trim
trim を使用すると、先頭と末尾の空白と末尾の改行を削除するのに時間がかかりました。これを行うように特別に設計されているため、%
trim('%abcdef%',' など) の先頭と末尾にある不要な文字を削除するためのパラメーター リストも受け入れることができるとは予想していませんでした。 '%abcdef%' を削除するには %' )
Continue
このツールを長い間使ってきた後、ある時ジャンプしたいと思うまでは、パラメータがないと常に思っていました。 3 レベルのループから...
ini_set
ネットワーク接続に基づいてプログラムを作成する場合、耐障害性を考慮してソケットのタイムアウトを設定する必要があります。php.ini で定義されているデフォルトの時間は 60 です。
; ソケットベースのストリームのデフォルトのタイムアウト (秒)
; http://php.net/default-socket-timeout
default_socket_timeout = 60
PHP マニュアルでは、ini_set を使用して設定を変更できます。
ini_set('default_socket_timeout',6 );
新しく発見した関数を使用するとき、私の習慣は次のとおりです:
var_dump(ini_set('default_socket_timeout',6));
実行結果プロンプト:
string(2) "60"
えっ?いくつかのマシンで試してみましたが、同じことが起こりました。どうすればよいでしょうか。 PHP マニュアルには次のように書かれています: 戻り値 成功した場合は古い値を返し、失敗した場合は FALSE を返します。 うっかりマニュアルを読みすぎました! posix_killnginx のログ ローテーション スクリプトphp で書かれています。php を更新するために、nginx に新しいログを再生成するように通知します。私が使用した N 台のマシンでは、この関数は正常に動作しました。友人に、マシンは次のように報告しました: 警告: posix_kill() はパラメーター 2 が長く、指定された文字列であることを期待しています 関数のプロトタイプを見てください: bool posix_kill (int $pid, int $sig) 2 番目のパラメーターは次のようにする必要があります私のマシンでは SIGUSR1 が動作しないのはなぜですか? PHP のバージョンが実際には私のものよりも高いのです。 SIGUSR1 に対応しますが、見つかりませんでした。最後に、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) SIGSYS13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG17) SIGSTOP 18) SIGTSTP 19) シグコント 20) シグホールド21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH29) 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) SIGUSR111 ) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24 ) SIGXCPU 25) SIGXFSZ 26)sigvtalrm 27)sigprof 28)sigwinch 29)sigio 30)sigpwr31)sigsys 34)sigrtmin+1 36)sigrtmin+2 37)sigrtmin+338)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-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX 異なるシステムを同時にサポートしたい場合はどうすればよいですか?ご判断の通り、php には PHP_OS というアーティファクトがあります。