Archives du mois 10/2005

"Daemonizer" un script PHP

16/10/2005

Suite à mon document sur la création de serveurs en PHP, peut-être certains d’entre vous ont dû se poser la question : comment « daemonizer » un script PHP ? En clair, comment faire en sorte qu’il fonctionne en arrière-plan sans user de saletés telles que nohup, comme un véritable serveur tel que Apache, MySQL, Samba, etc ?

Il est clair que la documentation de PHP manque de précision sur ce point, ce qui m’a forcé à aller récupérer quelques morceaux de réponse un peu partout et même à m’inspirer de programmes écrits en C ou en Perl. Je vais récapituler dans ce billet ce que j’ai appris.

Pour « daemonizer » un script PHP, il faut 3 étapes bien distinctes :

  • Le script doit se relancer lui-même en redirigeant tous les flux (STDIN, STDOUT, STDERR) vers /dev/null. Faute de quoi la sortie du script sera envoyée sur votre terminal. De plus, un problème avec OpenSSH se produit également lorsqu’on ne le fait pas.
  • Le processus doit être « forké ». En d’autres termes, on va faire une copie à l’identique du processus. La seule différence est que cette copie sera orpheline, c’est à dire qu’elle sera enfant direct de INIT (le processus racine du système), et non du terminal à partir duquel le démon a été lancé. On fermera ensuite le processus original. Si le fork n’st pas fait, l’administrateur se verra contraint de faire CTRL + C pour détacher le démon, ce qui n’est pas problématique (le processus ne sera pas fermé), mais peu esthétique.
  • Le processus doit être transformé en « chef de session ». Cela n’est pas réellement nécéssaire mais plus propre : ça évitera que le processus ne soit encore rattaché au terminal qui l’a lancé.

Pour programmer ces trois points, nous aurons besoin de 3 fonctions (respectivement) : proc_open(), pcntl_fork() et posix_setsid().

Voici le code :

// On se place dans le même répertoire que le script
chdir(dirname(__FILE__));

// On vérifie que l’extension PCNTL est bien là
if (!is_callable(‘pcntl_fork’))
{
	die(‘Error : PCNTL extension not available, recompile PHP with –enable-pcntl’.« \n »);
}


// Si cela n’est pas déjà été fait…
if (!in_array(‘/redirected’, $argv))
{
	// … on relance le script en redirigeant les flux
	
	$desc = array(
		0 => array(‘file’, ‘/dev/null’, ‘r’),
		1 => array(‘file’, ‘/dev/null’, ‘a’),
		2 => array(‘file’, ‘/dev/null’, ‘a’)
	);
	// Note : on peut améliorer ceci en repassant les paramètres de ligne de commande
	proc_open(‘php -f ‘.basename(__FILE__).‘ /redirected’, $desc, $null);
	
	// Puis on ferme le processus parent
	die();
}


// On tente de forker
$pid = pcntl_fork();

if ($pid == -1)
{
	// Erreur lors du fork
	die(‘Error: cannot fork’.« \n »);
}

if ($pid)
{
	// Fork réalisé : on ferme le processus original
	die();
}
else
{
	// Fork déjà réalisé : on ne fait rien

}

// On devient maître de session
posix_setsid();

// Let’s go !

Vous pouvez coder tout ce que vous voulez à la suite, ce sera « daemonizé ».

Rédigé par e-t172 | 3 commentaires »

1 and 1 fait de gros cadeaux

08/10/2005

Anniversaire : 1 and 1 fête ses dix ans. J’en aurais eu strictement rien à cirer si l’hébergeur ne proposait pas une offre très exceptionnelle pour cet anniversaire. En effet, 1 and 1 vous offre un pack d’hébergement web « premium » gratuit pendant 3 ans. Pour rappel, voici les grandes lignes de ce pack :

  • 2 Go d’espace disque
  • 20 Go de trafic
  • 5 accès FTP
  • 1 nom de domaine en .info offert
  • Gestion DNS
  • 500 comptes mail POP3/IMAP/Webmail
  • PHP 3, 4 et 5 (avec tout un tas d’extensions)
  • 10 bases de données MySQL
  • Accès SSH et tâches CRON

Et tout ça pour pas un rond. Oui, vous avez bien lu. Et oui, il serait suicidaire de ne pas se jeter dessus tout de suite : courez ! (bon, ça peut attendre quand même, l’offre dure jusqu’au 31 novembre)

Il faut avouer que 1 and 1 nous fait ici une excellente surprise et invente un système de vérification d’inscription des plus originaux : en effet, pour éviter que des petits malins s’amusent à faire 30 comptes pour une seule personne, une fois l’inscription faite un robot vous appelle par téléphone et vous demande d’entrer un code pour valider votre inscription. Or, un numéro de téléphone ne peut servir pour plusieurs comptes. Oui, ça calme, même si ça ne doit pas être très compliqué de trouver un pote qui accepte d’entrer un numéro quand on l’appellera sur son téléphone (et qui n’a rien à faire d’un hébergement web).

Le panel d’administration de 1and1 est joli mais apporte parfois peu d’informations là où on aimerait en avoir plus. Néanmoins, il fait ce qu’on lui demande. Dommage qu’il faille attendre plus ou moins longtemps pour que chaque modification soit prise en compte (une dizaine de minutes).

En résumé : jetez-vous dessus.

Rédigé par e-t172 | 21 commentaires »

Les normes, le salut du web ?

01/10/2005

Considérons le Web comme étant une ville. Chaque site représente un bâtiment, qui peut avoir diverses fonctions : Wikipédia serait un musée, votre webmail le bureau de poste, les magazins seraient les sites d’e-commerce, etc.

Pour pouvoir construire un bâtiment dans nos villes bien réelles, nous devons respecter un certain nombre de normes de construction. Ces normes peuvent être comparées aux standards du W3C. Elles garantissent la perrénité et l’accessibilité du bâtiment.

Aujourd’hui sur le Web, la grande majorité des webmasters construisent leurs bâtiments sans respecter ces normes. D’où des constructions branlantes, miteuses et inaccessibles aux personnes handicapées. Les standards du W3C, dont le respect serait dans la réalité obligatoire, sont bafoués dans la plus grande anarchie résultant de la « guerre mondiale du web » (guerre Netscape-Internet Explorer). Cette guerre est terminée depuis longtemps, et l’ONU (le W3C) a été créé afin de maintenir la paix. Malheureusement, les architectes n’ont pas suivi la croissance démographique et technologique du Web qui a suivi la fin de la guerre. Ils en sont resté à des techniques de construction dépassées complètement sous-dimensionnées censées pallier les déficiences de la technologie d’antan.

A l’inverse, certains architectes ont découvert les nouvelles techniques de construction, plus sûres, plus fiables, en respectant les normes de construction du W3C. Alors que les autres ne font que des baraques branlantes, ces constructeurs de la « nouvelle école » construisent des immeubles et des gratte-ciel, inventant de nouveaux styles et posant de gigantesques baies vitrées. Ces prouesses leur sont permises grâce aux nouvelles techniques telles que la mise en page CSS, leur garantissant une construction solide et pérenne.

Aujourd’hui, dans la réalité, quel architecte oserait refuser d’installer des accès pour handicapés à son bâtiment sous prétexte qu’ils ne constituent que quelques % de la population ? Cela ferait assurément scandale. Malheureusement, c’est encore monnaie courante sur le web. La plupart des bâtiments du web sont en effet encore aujourd’hui innaccessibles aux handicapés visuels ou moteurs, leur refusant ainsi l’accès à une source d’information et de culture. Beaucoup de webmasters envoient balader certains de leurs visiteurs sous prétexte qu’ils utilisent Firefox ou un autre navigateur alternatif. En forçant quelque peu l’analogie avec les handicaps, on obtient ceci : « Désolé, vous n’avez qu’à avoir des yeux ». Presque comique si ce n’était pas aussi grave.

Mais il y a aussi plus préoccupant : nous sommes dans une ville constituée en majorité uniquement de baraques branlantes. Le web est un bidonville. Et ce bidonville est l’oeuvre de tous ces webmasters dont l’irresponsabilité a bloqué tout progrès sérieux dans les domaines des matériaux de construction et des techniques associées. Lorsque vous faites une baraque de plus avec votre éditeur WYSIWYG, c’est tout le web que vous saccagez. Prenez du recul. Regardez plus loin que le bout de votre site. Vous n’avez pas le temps ou les compétences de construire proprement ? Eh bien ne construisez pas ou déléguez cette tâche à quelqu’un d’autre. Mais par pitié, ne venez pas ajouter encore une poubelle au web. Vous faites un site pour VOS VISITEURS, pas pour VOUS.

Le web est un pays en voie de développement. Rendez le plus attractif en diffusant et en enseignant les normes du W3C autour de vous. Il nous faut d’autres initiatives louables telle que celle du Site du Zéro. Certains se complaisent dans le fait que les standards seraient réservés à une « élite ». Il faut casser cette image.

Sur le web, le permis de construire n’existe pas. Au début on a trouvé ça super, maintenant il ne reste plus qu’à pleurer.

Rédigé par e-t172 | 11 commentaires »