informatique:php:php
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
informatique:php:php [2020/10/14 08:08] – [Fonction méconnues] alexis | informatique:php:php [2022/09/29 03:00] (Version actuelle) – alexis | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | |||
====== PHP ====== | ====== PHP ====== | ||
[[https:// | [[https:// | ||
===== Utiliser la ligne de commande ===== | ===== Utiliser la ligne de commande ===== | ||
+ | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
# Afficher la version | # Afficher la version | ||
Ligne 21: | Ligne 24: | ||
php -a | php -a | ||
</ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Fonctions méconnues ===== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ===== array_pop vs. array_shift ===== | ||
+ | La fonction '' | ||
+ | La finalité de ces fonctions est similaire mais il faut prêter attention aux performances car '' | ||
+ | Pour un tableau de petite taille, la différence est imperceptible mais quand sa taille augmente, cette différence se fait bien sentir. | ||
+ | En effet, la complexité de '' | ||
+ | |||
+ | Voici un exemple pour s'en convaincre : | ||
+ | <WRAP prewrap> | ||
+ | <code php benchmark.php> | ||
+ | <?php | ||
+ | |||
+ | $shift = array_fill(0, | ||
+ | $pop = $shift; | ||
+ | |||
+ | echo ' | ||
+ | $shiftStart = microtime(true); | ||
+ | while (null !== array_shift($shift)) { | ||
+ | } | ||
+ | echo (microtime(true) - $shiftStart), | ||
+ | $popStart = microtime(true); | ||
+ | while (null !== array_pop($pop)) { | ||
+ | } | ||
+ | echo (microtime(true) - $popStart), PHP_EOL; | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== PCRE et UTF-8 ===== | ||
+ | Il est possible de gérer des chaînes de caractères UTF-8 sans avoir besoin de recompiler PHP en activant le drapeau PCRE UTF-8. Pour faire cela, il suffit d' | ||
+ | |||
+ | En ajoutant le motif **(*UTF8)** à l' | ||
+ | |||
+ | Pour plus d' | ||
+ | |||
+ | ===== Convertir un tableau en CSV ===== | ||
+ | Il n'y a pas de fonction pour faire ça directement. Mais il est quand même possible de le faire en combinant certains outils de PHP. | ||
+ | <WRAP prewrap> | ||
+ | <code php> | ||
+ | // Ouverture d'un fichier mémoire en lecture/ | ||
+ | $fp = fopen(' | ||
+ | // ... Écriture du tableau dans le fichier mémoire ... | ||
+ | $length += fputcsv($fp, | ||
+ | // ... Retour au début du fichier mémoire que l'on vient d' | ||
+ | rewind($fp); | ||
+ | // ... Lecture du fichier mémoire dans une variable ... | ||
+ | $data = fread($fp, $length); | ||
+ | // ... Fermeture du fichier mémoire ... | ||
+ | fclose($fp); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Utiliser le client SOAP avec un certificat ===== | ||
+ | Certains services web demandent de s' | ||
+ | |||
+ | En lisant la documentation, | ||
+ | Heureusement, | ||
+ | |||
+ | <WRAP prewrap> | ||
+ | <code php> | ||
+ | $wsdl = "< | ||
+ | |||
+ | // Ici on configure les options de la requête SSL | ||
+ | $context = stream_context_create([ | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ], | ||
+ | ]); | ||
+ | |||
+ | // Ici on configure les options du client SOAP | ||
+ | $soap_options = [ | ||
+ | ' | ||
+ | ]; | ||
+ | |||
+ | // Ici on cré le client SOAP avec les options SOAP et SSL | ||
+ | $soap_client = new \SoapClient($wsdl, | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Curiosités ===== | ||
+ | ==== Quine ==== | ||
+ | <WRAP prewrap> | ||
+ | <code php> | ||
+ | <?php | ||
+ | readfile(__FILE__); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Boucle " | ||
+ | Cette boucle est une boucle infinie. | ||
+ | <WRAP prewrap> | ||
+ | <code php> | ||
+ | for (;;) { | ||
+ | // ... | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | Elle est équivalente à cette autre boucle infinie : | ||
+ | <WRAP prewrap> | ||
+ | <code php> | ||
+ | while (true) { | ||
+ | // ... | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | ====== Obsolète ====== | ||
===== Utiliser plusieurs versions de PHP sur la version serveur de Ubuntu 12.04 LTS ===== | ===== Utiliser plusieurs versions de PHP sur la version serveur de Ubuntu 12.04 LTS ===== | ||
Par défaut, la version de PHP installée sur cette version est la version 5.3.10. Voici les différentes étapes pour pouvoir utiliser plusieurs versions de PHP simultanement avec Apache. | Par défaut, la version de PHP installée sur cette version est la version 5.3.10. Voici les différentes étapes pour pouvoir utiliser plusieurs versions de PHP simultanement avec Apache. | ||
==== Installation des bibliothèques nécessaires ==== | ==== Installation des bibliothèques nécessaires ==== | ||
+ | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
# Bibliothèques pour la compilation | # Bibliothèques pour la compilation | ||
Ligne 43: | Ligne 173: | ||
libapache2-mod-fastcgi | libapache2-mod-fastcgi | ||
</ | </ | ||
+ | </ | ||
+ | |||
==== Compilation de PHP ==== | ==== Compilation de PHP ==== | ||
+ | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
# récupération du code source | # récupération du code source | ||
Ligne 84: | Ligne 217: | ||
sudo cp php.ini-production / | sudo cp php.ini-production / | ||
</ | </ | ||
+ | </ | ||
**Notes** : | **Notes** : | ||
* '' | * '' | ||
* '' | * '' | ||
+ | |||
==== Configuration de Apache - FastCGI ==== | ==== Configuration de Apache - FastCGI ==== | ||
Il faut commencer par activer le module FastCGI dans Apache. | Il faut commencer par activer le module FastCGI dans Apache. | ||
Ensuite, il faut créer le fichier /// | Ensuite, il faut créer le fichier /// | ||
+ | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
#!/bin/sh | #!/bin/sh | ||
Ligne 102: | Ligne 238: | ||
exec / | exec / | ||
</ | </ | ||
+ | </ | ||
Puis rendre ce fichier exécutable. | Puis rendre ce fichier exécutable. | ||
+ | |||
==== Configuration de Apache - VirtualHost ==== | ==== Configuration de Apache - VirtualHost ==== | ||
Il faut configurer normalement le VirtualHost pour le site que nous voulons servir. Il faut cependant ajouter quelques instructions spécifiques à l' | Il faut configurer normalement le VirtualHost pour le site que nous voulons servir. Il faut cependant ajouter quelques instructions spécifiques à l' | ||
- | - Il faut ajouter l' | + | - Il faut ajouter l' |
Options Indexes FollowSymLinks MultiViews ExecCGI | Options Indexes FollowSymLinks MultiViews ExecCGI | ||
- | </ | + | </code></ |
- | - Il faut ajouter la méthode que l'on va utiliser pour manipuler les fichiers php :<code apache> | + | - Il faut ajouter la méthode que l'on va utiliser pour manipuler les fichiers php :<WRAP prewrap><code apache> |
AddHandler fastcgi .php | AddHandler fastcgi .php | ||
- | </ | + | </code></ |
- | - ll faut configurer la méthode que l'on va utiliser pour manipuler les fichiers php :<code apache> | + | - ll faut configurer la méthode que l'on va utiliser pour manipuler les fichiers php :<WRAP prewrap><code apache> |
Action fastcgi / | Action fastcgi / | ||
- | </ | + | </code></ |
- | - Il faut configurer l' | + | - Il faut configurer l' |
ScriptAlias /cgi-bin/ "/ | ScriptAlias /cgi-bin/ "/ | ||
- | </ | + | </code></ |
- | - Il faut configurer le dossier dans lequel se trouve les scripts utilisés par le module FastCGI :<code apache> | + | - Il faut configurer le dossier dans lequel se trouve les scripts utilisés par le module FastCGI :<WRAP prewrap><code apache> |
< | < | ||
AllowOverride All | AllowOverride All | ||
Ligne 126: | Ligne 264: | ||
Allow from all | Allow from all | ||
</ | </ | ||
- | </ | + | </code></ |
Le résultat final devrait ressembler à ce qui suit : | Le résultat final devrait ressembler à ce qui suit : | ||
+ | <WRAP prewrap> | ||
<code apache> | <code apache> | ||
< | < | ||
Ligne 161: | Ligne 300: | ||
</ | </ | ||
</ | </ | ||
+ | </ | ||
**Attention**, | **Attention**, | ||
+ | |||
==== Liens utiles ==== | ==== Liens utiles ==== | ||
* [[http:// | * [[http:// | ||
Ligne 172: | Ligne 313: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | |||
- | ===== Fonction méconnues ===== | ||
- | |||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | |||
- | ===== PCRE et UTF-8 ===== | ||
- | Il est possible de gérer des chaînes de caractères UTF-8 sans avoir besoin de recompiler PHP en activant le drapeau PCRE UTF-8. Pour faire cela, il suffit d' | ||
- | |||
- | En ajoutant le motif **(*UTF8)** à l' | ||
- | |||
- | Pour plus d' | ||
- | |||
- | ===== Convertir un tableau en CSV ===== | ||
- | Il n'y a pas de fonction pour faire ça directement. Mais il est quand même possible de le faire en combinant certains outils de PHP. | ||
- | <code php> | ||
- | // Ouverture d'un fichier mémoire en lecture/ | ||
- | $fp = fopen(' | ||
- | // ... Écriture du tableau dans le fichier mémoire ... | ||
- | $length += fputcsv($fp, | ||
- | // ... Retour au début du fichier mémoire que l'on vient d' | ||
- | rewind($fp); | ||
- | // ... Lecture du fichier mémoire dans une variable ... | ||
- | $data = fread($fp, $length); | ||
- | // ... Fermeture du fichier mémoire ... | ||
- | fclose($fp); | ||
- | </ | ||
- | |||
- | ===== Utiliser le client SOAP avec un certificat ===== | ||
- | Certains services web demandent de s' | ||
- | |||
- | En lisant la documentation, | ||
- | Heureusement, | ||
- | |||
- | <code php> | ||
- | $wsdl = "< | ||
- | |||
- | // Ici on configure les options de la requête SSL | ||
- | $context = stream_context_create([ | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ], | ||
- | ]); | ||
- | |||
- | // Ici on configure les options du client SOAP | ||
- | $soap_options = [ | ||
- | ' | ||
- | ]; | ||
- | |||
- | // Ici on cré le client SOAP avec les options SOAP et SSL | ||
- | $soap_client = new \SoapClient($wsdl, | ||
- | </ | ||
- | |||
- | ===== Curiosités ===== | ||
- | ==== Quine ==== | ||
- | <code php> | ||
- | <?php | ||
- | readfile(__FILE__); | ||
- | </ | ||
- | |||
- | ==== Boucle " | ||
- | Cette boucle est une boucle infinie. | ||
- | <code php> | ||
- | for (;;) { | ||
- | // ... | ||
- | } | ||
- | </ | ||
- | Elle est équivalente à cette autre boucle infinie : | ||
- | <code php> | ||
- | while (true) { | ||
- | // ... | ||
- | } | ||
- | </ | ||
- | |||
===== Installer HHVM sur Ubuntu 15.10 ===== | ===== Installer HHVM sur Ubuntu 15.10 ===== | ||
+ | <WRAP prewrap> | ||
<code bash> | <code bash> | ||
# Gère les dépôts utilisés pour installer des programmes (common) | # Gère les dépôts utilisés pour installer des programmes (common) | ||
Ligne 276: | Ligne 332: | ||
sudo apt-get install hhvm | sudo apt-get install hhvm | ||
</ | </ | ||
+ | </ | ||
Pour plus d' | Pour plus d' | ||
+ |
informatique/php/php.1602688105.txt.gz · Dernière modification : 2020/10/14 08:08 de alexis