Heim > Artikel > Backend-Entwicklung > Ein paar unauffällige Tricks in PHP
Man sagt, es sei ein unauffälliger kleiner Trick, aber eigentlich sollte es sich um eine Routineanwendung handeln, die nicht häufig verwendet wird. Viele Dinge sind so eine Sache, sie nutzen zu können eine andere , und es zu üben ist eine andere Sache. Und um ein Meister zu werden, sind solide Grundkenntnisse erforderlich -r in perl 'echo str_repeat("ABC",5),"n";'
ABCABCABCABCABC
substr
Das ist gewohnt Zeichengeräte abfangen Wenn Sie beispielsweise den ersten Buchstaben einer Zeichenfolge abfangen möchten:
$string = 'abcdefg'
substr($string,0,1), erhalten Sie a. Aber jetzt bin ich daran gewöhnt. Wenn ich beurteile, ob die Zeichenfolge 7 ist, verwende ich jetzt isset($string[6]), weil es heißt, dass isset schneller ist als strlen. Auf die gleiche Weise wird diese Erfahrung auch verwendet, um
trim
zu zählen Es hat lange gedauert, bis der Autor dies getan hat. Da es speziell dafür entwickelt wurde, hatte ich nicht erwartet, dass es auch eine Parameterliste zum Entfernen unerwünschter Zeichen am Anfang und am Ende akzeptieren kann, z. B. %
trim('%abcdef%' to Remove '%abcdef%' ,'%')
continue
Dieser Typ wird verwendet, um die folgende Schleife nach der Verwendung zu überspringen Lange Zeit dachte der Autor, es hätte keine Parameter, bis der Autor eines Tages aus einer dreischichtigen Schleife springen wollte...
ini_set
Wenn wir Programme basierend auf Netzwerkverbindungen schreiben, müssen wir die Socket-Timeout-Zeit festlegen. Die in php.ini definierte Standardzeit beträgt 60 Sekunden basierte Streams (Sekunden)
; http://php.net/default- socket-timeout
default_socket_timeout = 60
Im PHP-Handbuch können Sie ini_set verwenden Ändern Sie die Konfiguration von php.ini, also dachte ich an:
ini_set('default_socket_timeout',6);
Wenn der Autor einige neu entdeckte Funktionen verwendet, ist meine Gewohnheit:
var_dump(ini_set('default_socket_timeout',6));
Eine laufende Ergebnisaufforderung:
string(2) "60"
Häh? dass die Einstellung fehlgeschlagen ist? Ich habe es auf mehreren Maschinen versucht und es ist immer noch das Gleiche. Nach langer Recherche habe ich endlich ein Problem im PHP-Handbuch gefunden. Es steht so:
Rückgabewerte
Gibt bei Erfolg den alten Wert zurück, bei Misserfolg FALSE.
Hey, ich habe das Handbuch zu nachlässig gelesen!
posix_kill
Ich habe das Protokollrotationsskript von nginx in PHP geschrieben. Um PHP zu aktualisieren und Nginx zu benachrichtigen, neue Protokolle zu generieren, habe ich posix_kill:
posix_kill($nginx_pid,SIGUSR1)
On the verwendet Auf N-Maschinen, die ich verwendet habe, funktionierte diese Funktion normal. Aber als ich dieses Skript einem Kumpel geliehen habe, meldete die Maschine:
Warnung: posix_kill() erwartet, dass Parameter 2 lang ist, Zeichenfolge angegeben
Schauen Sie sich den Funktionsprototyp an: bool posix_kill ( int $pid , int $sig )
Der zweite Parameter ist wahr. Ich muss int angeben. Warum funktioniert SIGUSR1 nicht auf meinem Rechner, aber nicht auf dem PHP-Rechner meines Freundes? Versionsproblem? Die PHP-Version meines Kumpels ist höher als meine!
Ich habe lange online nach dem entsprechenden Wert für SIGUSR1 gesucht und versehentlich eingegeben: kill -l und bekam es
9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH29) SIGINFO 30) SIGUSR1 31 ) SIGUSR2Das Obige gilt für Mac, aber der entsprechende Wert von SIGUSR1 für Linux ist tatsächlich anders, ich bin sprachlos. 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) Sigterm
16 ) Sigstkflt 17) SIGCHLD 18) SIGSTOP 20) SIGTSTP
21) Sigttou 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
Was ist, wenn Sie verschiedene Systeme gleichzeitig unterstützen möchten? PHP verfügt über ein Artefakt namens PHP_OS.