Outils pour utilisateurs

Outils du site


informatique:php:php

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:php:php [2021/11/12 08:11] – [PCRE et UTF-8] alexisinformatique:php:php [2022/09/29 03:00] (Version actuelle) alexis
Ligne 4: Ligne 4:
 [[https://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php?rq=1|Liste]] pour la compréhension des opérateurs parce que c'est impossible de les rechercher dans un moteur, par exemple ''...''. [[https://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php?rq=1|Liste]] pour la compréhension des opérateurs parce que c'est impossible de les rechercher dans un moteur, par exemple ''...''.
 ===== Utiliser la ligne de commande ===== ===== Utiliser la ligne de commande =====
 +<WRAP prewrap>
 <code bash> <code bash>
 # Afficher la version # Afficher la version
Ligne 23: Ligne 24:
 php -a php -a
 </code> </code>
 +</WRAP>
  
 ===== Fonctions méconnues ===== ===== Fonctions méconnues =====
Ligne 43: Ligne 45:
  
 ===== array_pop vs. array_shift ===== ===== array_pop vs. array_shift =====
 +La fonction ''array_pop'' permet d'extraire le dernier élément d'un tableau tandis que ''array_shift'' permet d'extraire le premier élément d'un tableau.
 +La finalité de ces fonctions est similaire mais il faut prêter attention aux performances car ''array_shift'' doit recalculer les index, ce qui n'est pas le cas de ''array_pop''.
 +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 ''array_pop'' est de ''O(1)'' tandis que celle de ''array_shift'' est de ''O(n)''.
 +
 +Voici un exemple pour s'en convaincre :
 +<WRAP prewrap>
 +<code php benchmark.php>
 +<?php
 +
 +$shift = array_fill(0, 1000000, uniqid());
 +$pop = $shift;
 +
 +echo 'array_shift processing: ';
 +$shiftStart = microtime(true);
 +while (null !== array_shift($shift)) {
 +}
 +echo (microtime(true) - $shiftStart), PHP_EOL, 'array_pop processing: ';
 +$popStart = microtime(true);
 +while (null !== array_pop($pop)) {
 +}
 +echo (microtime(true) - $popStart), PHP_EOL;
 +
 +</code>
 +</WRAP>
  
 ===== PCRE et UTF-8 ===== ===== PCRE et UTF-8 =====
Ligne 53: Ligne 80:
 ===== Convertir un tableau en CSV ===== ===== 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. 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> <code php>
 // Ouverture d'un fichier mémoire en lecture/écriture ... // Ouverture d'un fichier mémoire en lecture/écriture ...
Ligne 65: Ligne 93:
 fclose($fp); fclose($fp);
 </code> </code>
 +</WRAP>
  
 ===== Utiliser le client SOAP avec un certificat ===== ===== Utiliser le client SOAP avec un certificat =====
Ligne 72: Ligne 101:
 Heureusement, il existe une autre façon de faire en injectant le certificat du client ainsi que son mot de passe directement dans la requête SSL. Heureusement, il existe une autre façon de faire en injectant le certificat du client ainsi que son mot de passe directement dans la requête SSL.
  
 +<WRAP prewrap>
 <code php> <code php>
 $wsdl = "<URL du fichier de description du service web>"; $wsdl = "<URL du fichier de description du service web>";
Ligne 91: Ligne 121:
 $soap_client = new \SoapClient($wsdl, $soap_options); $soap_client = new \SoapClient($wsdl, $soap_options);
 </code> </code>
 +</WRAP>
  
 ===== Curiosités ===== ===== Curiosités =====
 ==== Quine ==== ==== Quine ====
 +<WRAP prewrap>
 <code php> <code php>
 <?php <?php
 readfile(__FILE__); readfile(__FILE__);
 </code> </code>
 +</WRAP>
  
 ==== Boucle "for" sans paramètres ==== ==== Boucle "for" sans paramètres ====
 Cette boucle est une boucle infinie. Cette boucle est une boucle infinie.
 +<WRAP prewrap>
 <code php> <code php>
 for (;;) { for (;;) {
Ligne 106: Ligne 140:
 } }
 </code> </code>
 +</WRAP>
 Elle est équivalente à cette autre boucle infinie : Elle est équivalente à cette autre boucle infinie :
 +<WRAP prewrap>
 <code php> <code php>
 while (true) { while (true) {
Ligne 112: Ligne 148:
 } }
 </code> </code>
 +</WRAP>
  
 ====== Obsolète ====== ====== Obsolète ======
Ligne 117: Ligne 154:
 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 135: Ligne 173:
 libapache2-mod-fastcgi libapache2-mod-fastcgi
 </code> </code>
 +</WRAP>
 +
 ==== 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 176: Ligne 217:
 sudo cp php.ini-production /etc/php55/php.ini sudo cp php.ini-production /etc/php55/php.ini
 </code> </code>
 +</WRAP>
  
 **Notes** : **Notes** :
   * ''%%--with-mysql%%'' ne doit plus être utilisé car l'extension n'est plus supportée (([[https://wiki.php.net/rfc/mysql_deprecation|Request for Comments: ext/mysql deprecation]])).   * ''%%--with-mysql%%'' ne doit plus être utilisé car l'extension n'est plus supportée (([[https://wiki.php.net/rfc/mysql_deprecation|Request for Comments: ext/mysql deprecation]])).
   * ''%%--with-mysqli%%'' et ''%%--with-pdo-mysql%%'' utilisent par défaut la bibliothèque //libmysqlclient//. Il est possible de la remplacer par la bibliothèque //mysqlnd// qui est native (([[http://php.net/manual/en/mysqlinfo.library.choosing.php|Choosing a library]])).   * ''%%--with-mysqli%%'' et ''%%--with-pdo-mysql%%'' utilisent par défaut la bibliothèque //libmysqlclient//. Il est possible de la remplacer par la bibliothèque //mysqlnd// qui est native (([[http://php.net/manual/en/mysqlinfo.library.choosing.php|Choosing a library]])).
 +
 ==== 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 ///var/www/cgi-bin/php-cgi-5.5// : Ensuite, il faut créer le fichier ///var/www/cgi-bin/php-cgi-5.5// :
 +<WRAP prewrap>
 <code bash> <code bash>
 #!/bin/sh #!/bin/sh
Ligne 194: Ligne 238:
 exec /usr/local/php55/bin/php-cgi exec /usr/local/php55/bin/php-cgi
 </code> </code>
 +</WRAP>
  
 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'utilisation de FastCGI. Il faut configurer normalement le VirtualHost pour le site que nous voulons servir. Il faut cependant ajouter quelques instructions spécifiques à l'utilisation de FastCGI.
  
-  - Il faut ajouter l'option d'exécution de CGI<code apache>+  - Il faut ajouter l'option d'exécution de CGI<WRAP prewrap><code apache>
 Options Indexes FollowSymLinks MultiViews ExecCGI Options Indexes FollowSymLinks MultiViews ExecCGI
-</code> +</code></WRAP
-  - 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> +</code></WRAP
-  - 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 /cgi-bin/php-cgi-5.5 Action fastcgi /cgi-bin/php-cgi-5.5
-</code> +</code></WRAP
-  - Il faut configurer l'alias utilisé à l'étape précédente :<code apache>+  - Il faut configurer l'alias utilisé à l'étape précédente :<WRAP prewrap><code apache>
 ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
-</code> +</code></WRAP
-  - 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>
 <Directory /var/www/cgi-bin/> <Directory /var/www/cgi-bin/>
     AllowOverride All     AllowOverride All
Ligne 218: Ligne 264:
     Allow from all     Allow from all
 </Directory> </Directory>
-</code>+</code></WRAP>
 Le résultat final devrait ressembler à ce qui suit : Le résultat final devrait ressembler à ce qui suit :
 +<WRAP prewrap>
 <code apache> <code apache>
 <VirtualHost *:80> <VirtualHost *:80>
Ligne 253: Ligne 300:
 </VirtualHost> </VirtualHost>
 </code> </code>
 +</WRAP>
 **Attention**, pour que cette configuration fonctionne, il faut que le module actions soit activé. Il est également important de noter que cette configuration peut cohabiter avec le module php. **Attention**, pour que cette configuration fonctionne, il faut que le module actions soit activé. Il est également important de noter que cette configuration peut cohabiter avec le module php.
  
Ligne 267: Ligne 315:
  
 ===== 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 283: Ligne 332:
 sudo apt-get install hhvm sudo apt-get install hhvm
 </code> </code>
 +</WRAP>
 Pour plus d'informations, voir la [[https://docs.hhvm.com/hhvm/installation/linux#ubuntu-15.10-wily-werewolf|page officielle]]. Pour plus d'informations, voir la [[https://docs.hhvm.com/hhvm/installation/linux#ubuntu-15.10-wily-werewolf|page officielle]].
  
informatique/php/php.1636733464.txt.gz · Dernière modification : 2021/11/12 08:11 de alexis