ホームページ  >  記事  >  バックエンド開発  >  PHP における目立たないトリックのいくつか

PHP における目立たないトリックのいくつか

高洛峰
高洛峰オリジナル
2016-11-28 16:24:47813ブラウズ

目立たない小さなトリックだと言われていますが、実際には、それを知っていることと、それを使用できることは別のことです。マスターになるには、しっかりとした基本スキルが必要です

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_kill

nginx のログ ローテーション スクリプト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) SIGSYS

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

17) SIGSTOP 18) SIGTSTP 19) シグコント 20) シグホールド

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) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24 ) SIGXCPU 25) SIGXFSZ

26)sigvtalrm 27)sigprof 28)sigwinch 29)sigio 30)sigpwr

31)sigsys 34)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 までご連絡ください。