<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Commentaires pour Blog de Boris HUISGEN</title>
	<atom:link href="http://blog.hbis.fr/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.hbis.fr</link>
	<description>Administrateur &#38; Développeur système UNIX/Linux</description>
	<lastBuildDate>Thu, 03 May 2012 09:19:06 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>Commentaires sur PHP : default_socket_timeout par Boris HUISGEN</title>
		<link>http://blog.hbis.fr/2012/05/02/php-default_socket_timeout/comment-page-1/#comment-1308</link>
		<dc:creator>Boris HUISGEN</dc:creator>
		<pubDate>Thu, 03 May 2012 09:19:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4848#comment-1308</guid>
		<description>La fonction set_time_limit() ne fonctionne pas en mode CLI, max_execution_time étant hardcodé dans ce cas à 0. D&#039;où l&#039;intérêt en mode FPM de l&#039;option request_terminate_timeout pour killer le script.

Pour le sleep, il repose sur le SIGALRM tout comme max_execution_time, donc le handler du signal est détourné ce qui explique ce comportement. Si tu as un accès à un serveur web Apache avec module PHP, un bot ferait l&#039;affaire pour le griller :)

Avec un shell_exec c&#039;est la même chose. Par contre, tu peux avoir une erreur fatale au niveau de l&#039;allocation mémoire. Exemple: shell_exec(&#039;/usr/bin/yes&#039;).

La commande timeout est à utiliser avec les shell_exec. Mais au niveau cron, je préfère une autre solution, à savoir restreinte et transparente car il vaut mieux donner aucune confiance à l&#039;utilisateur. Je vais voir du côté des cgroups (http://www.mjmwired.net/kernel/Documentation/cgroups/cpuacct.txt). Si j&#039;ai des news je posterais mes résultats. Cf mon article pour une configuration sécuriée en mode FPM avec des cgroups sur la RAM et le % CPU : http://blog.hbis.fr/2012/01/16/debian-webserver_and_cgroups/</description>
		<content:encoded><![CDATA[<p>La fonction set_time_limit() ne fonctionne pas en mode CLI, max_execution_time étant hardcodé dans ce cas à 0. D&#8217;où l&#8217;intérêt en mode FPM de l&#8217;option request_terminate_timeout pour killer le script.</p>
<p>Pour le sleep, il repose sur le SIGALRM tout comme max_execution_time, donc le handler du signal est détourné ce qui explique ce comportement. Si tu as un accès à un serveur web Apache avec module PHP, un bot ferait l&#8217;affaire pour le griller :)</p>
<p>Avec un shell_exec c&#8217;est la même chose. Par contre, tu peux avoir une erreur fatale au niveau de l&#8217;allocation mémoire. Exemple: shell_exec(&#8216;/usr/bin/yes&#8217;).</p>
<p>La commande timeout est à utiliser avec les shell_exec. Mais au niveau cron, je préfère une autre solution, à savoir restreinte et transparente car il vaut mieux donner aucune confiance à l&#8217;utilisateur. Je vais voir du côté des cgroups (<a href="http://www.mjmwired.net/kernel/Documentation/cgroups/cpuacct.txt" rel="nofollow">http://www.mjmwired.net/kernel/Documentation/cgroups/cpuacct.txt</a>). Si j&#8217;ai des news je posterais mes résultats. Cf mon article pour une configuration sécuriée en mode FPM avec des cgroups sur la RAM et le % CPU : <a href="http://blog.hbis.fr/2012/01/16/debian-webserver_and_cgroups/" rel="nofollow">http://blog.hbis.fr/2012/01/16/debian-webserver_and_cgroups/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur PHP : default_socket_timeout par Ludo</title>
		<link>http://blog.hbis.fr/2012/05/02/php-default_socket_timeout/comment-page-1/#comment-1305</link>
		<dc:creator>Ludo</dc:creator>
		<pubDate>Wed, 02 May 2012 19:11:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4848#comment-1305</guid>
		<description>1. gérer les erreurs, oui, cela me semble primordial.
2. je ne me suis jamais servi de set_time_limit personnellement, je ne vois pas d&#039;usage concret d&#039;une telle fonction.  
Pour les crons, c&#039;est effectivement une question que je me pose aussi. Au détour des commentaires sur set_time_limit, je viens de lire une suggestion intéressante: lancer php par l&#039;intermédiaire de timeout (sous *nix/nux), du genre 

timeout 10 php script.php

et même possibilité de spécifier le type de signal à envoyer. S&#039;il n&#039;y a aucune conséquence au kill bête et méchant, why not?

Une autre solution, register_shutdown_function() et error_get_last() dedans pour vérifier que le script ne s&#039;est pas arrêté pour cause de timeout. Cette manip me semble plus aléatoire cependant, pour la remarque d&#039;utilisation CPU en rapport avec set_time_limit (un sleep(30) sur un max_execution_time de 10 n&#039;amènera jamais à l&#039;erreur de timeout...)

3. je n&#039;ai pas potassé le sujet des timeout jusqu&#039;à ce niveau, mais ta remarque est aussi évidente qu&#039;en 1.

4. C&#039;est parce que tes articles sont trop courts! Alors lâchons nous dans les commentaires! :)</description>
		<content:encoded><![CDATA[<p>1. gérer les erreurs, oui, cela me semble primordial.<br />
2. je ne me suis jamais servi de set_time_limit personnellement, je ne vois pas d&#8217;usage concret d&#8217;une telle fonction.<br />
Pour les crons, c&#8217;est effectivement une question que je me pose aussi. Au détour des commentaires sur set_time_limit, je viens de lire une suggestion intéressante: lancer php par l&#8217;intermédiaire de timeout (sous *nix/nux), du genre </p>
<p>timeout 10 php script.php</p>
<p>et même possibilité de spécifier le type de signal à envoyer. S&#8217;il n&#8217;y a aucune conséquence au kill bête et méchant, why not?</p>
<p>Une autre solution, register_shutdown_function() et error_get_last() dedans pour vérifier que le script ne s&#8217;est pas arrêté pour cause de timeout. Cette manip me semble plus aléatoire cependant, pour la remarque d&#8217;utilisation CPU en rapport avec set_time_limit (un sleep(30) sur un max_execution_time de 10 n&#8217;amènera jamais à l&#8217;erreur de timeout&#8230;)</p>
<p>3. je n&#8217;ai pas potassé le sujet des timeout jusqu&#8217;à ce niveau, mais ta remarque est aussi évidente qu&#8217;en 1.</p>
<p>4. C&#8217;est parce que tes articles sont trop courts! Alors lâchons nous dans les commentaires! :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur PHP : default_socket_timeout par Boris HUISGEN</title>
		<link>http://blog.hbis.fr/2012/05/02/php-default_socket_timeout/comment-page-1/#comment-1304</link>
		<dc:creator>Boris HUISGEN</dc:creator>
		<pubDate>Wed, 02 May 2012 18:28:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4848#comment-1304</guid>
		<description>Précisions très claires sur max_execution_time. Donc cela oblige vraiment à baisser default_socket_timeout et à ne pas compter du tout sur max_execution_time. Il faut pas se leurrer il est impossible d&#039;implémenter un timeout global, sachant que ce genre de mécanisme repose sur signal SIGALRM donc inefficace pour les appels kernelland &amp; processus externes. Conséquence ou principe de base : il faut surtout gérer les erreurs au lieu de repousser les limites. 

Fonction à bannir d&#039;emblée : set_time_limit. Quand je configure php-fpm je restreins de toute manière le max_execution_time à 30 s (merci php_admin_value) et je force en plus le kill du script avec request_terminate_timeout à 35 s. Pour les crons, je ne connais pas de solutions. A voir du côté des cgroups Linux ?

Au niveau MySQL, tu peux gérer les timeout de connexion, net_read_timeout, net_write_timeout, wait_timeout et innodb_lock_wait_timeout. Reste évidemment que le temps de processing d&#039;une query n&#039;a pas de timeout. D&#039;où l’intérêt d&#039;une bonne structure et des requêtes précises.

Tu me fais trop parler Ludovic, c&#039;est pas bien !</description>
		<content:encoded><![CDATA[<p>Précisions très claires sur max_execution_time. Donc cela oblige vraiment à baisser default_socket_timeout et à ne pas compter du tout sur max_execution_time. Il faut pas se leurrer il est impossible d&#8217;implémenter un timeout global, sachant que ce genre de mécanisme repose sur signal SIGALRM donc inefficace pour les appels kernelland &#038; processus externes. Conséquence ou principe de base : il faut surtout gérer les erreurs au lieu de repousser les limites. </p>
<p>Fonction à bannir d&#8217;emblée : set_time_limit. Quand je configure php-fpm je restreins de toute manière le max_execution_time à 30 s (merci php_admin_value) et je force en plus le kill du script avec request_terminate_timeout à 35 s. Pour les crons, je ne connais pas de solutions. A voir du côté des cgroups Linux ?</p>
<p>Au niveau MySQL, tu peux gérer les timeout de connexion, net_read_timeout, net_write_timeout, wait_timeout et innodb_lock_wait_timeout. Reste évidemment que le temps de processing d&#8217;une query n&#8217;a pas de timeout. D&#8217;où l’intérêt d&#8217;une bonne structure et des requêtes précises.</p>
<p>Tu me fais trop parler Ludovic, c&#8217;est pas bien !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur PHP : default_socket_timeout par Ludo</title>
		<link>http://blog.hbis.fr/2012/05/02/php-default_socket_timeout/comment-page-1/#comment-1303</link>
		<dc:creator>Ludo</dc:creator>
		<pubDate>Wed, 02 May 2012 14:26:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4848#comment-1303</guid>
		<description>Les articles qui commencent comme le tien sont toujours amusants à lire :) (Cela m&#039;a même incité à le lire, pour tout dire!)

Ceci dit, un peu de lecture de la doc PHP mentionne que:

&quot;Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running.&quot;

(http://www.php.net/manual/en/function.set-time-limit.php)

Alors, ce comportement est-il bien ou pas est une autre question, mais au moins, il est documenté.</description>
		<content:encoded><![CDATA[<p>Les articles qui commencent comme le tien sont toujours amusants à lire :) (Cela m&#8217;a même incité à le lire, pour tout dire!)</p>
<p>Ceci dit, un peu de lecture de la doc PHP mentionne que:</p>
<p>&laquo;&nbsp;Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running.&nbsp;&raquo;</p>
<p>(<a href="http://www.php.net/manual/en/function.set-time-limit.php" rel="nofollow">http://www.php.net/manual/en/function.set-time-limit.php</a>)</p>
<p>Alors, ce comportement est-il bien ou pas est une autre question, mais au moins, il est documenté.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Zabbix : monitorer un serveur Postfix par Boris HUISGEN</title>
		<link>http://blog.hbis.fr/2012/03/30/zabbix-postfix_monitoring/comment-page-1/#comment-1301</link>
		<dc:creator>Boris HUISGEN</dc:creator>
		<pubDate>Mon, 30 Apr 2012 23:33:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4687#comment-1301</guid>
		<description>Crée un répertoire tmp dans le home de cet utilisateur.</description>
		<content:encoded><![CDATA[<p>Crée un répertoire tmp dans le home de cet utilisateur.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Zabbix : monitorer un serveur Postfix par lls</title>
		<link>http://blog.hbis.fr/2012/03/30/zabbix-postfix_monitoring/comment-page-1/#comment-1300</link>
		<dc:creator>lls</dc:creator>
		<pubDate>Mon, 30 Apr 2012 23:27:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4687#comment-1300</guid>
		<description>Comment faire pour modifier les permissions du dossier /tmp de manière à ce qu&#039;il soit accessible par le cron de mon utilisateur (user)?</description>
		<content:encoded><![CDATA[<p>Comment faire pour modifier les permissions du dossier /tmp de manière à ce qu&#8217;il soit accessible par le cron de mon utilisateur (user)?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Zabbix : monitorer un serveur Postfix par Boris HUISGEN</title>
		<link>http://blog.hbis.fr/2012/03/30/zabbix-postfix_monitoring/comment-page-1/#comment-1299</link>
		<dc:creator>Boris HUISGEN</dc:creator>
		<pubDate>Mon, 30 Apr 2012 22:40:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4687#comment-1299</guid>
		<description>La commande mktemp aurait une syntaxe différente sur ton OS ?

Si c&#039;est lancé en cron, attention au PATH &amp; permissions.</description>
		<content:encoded><![CDATA[<p>La commande mktemp aurait une syntaxe différente sur ton OS ?</p>
<p>Si c&#8217;est lancé en cron, attention au PATH &#038; permissions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Zabbix : monitorer un serveur Postfix par lls</title>
		<link>http://blog.hbis.fr/2012/03/30/zabbix-postfix_monitoring/comment-page-1/#comment-1298</link>
		<dc:creator>lls</dc:creator>
		<pubDate>Mon, 30 Apr 2012 22:05:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4687#comment-1298</guid>
		<description>Bonjour,
j&#039;ai une question à propos de l&#039;utilisation du cron. Si je lance le script manuellement avec la commande &#039;sudo /Applications/assp/assp-stat/zabbix-postfix.sh&#039;, les données sont envoyées et retranscrites dans mon graph zabbix. Par contre, si je laisse le cron lancer le script toutes les 5 min. le graph ne semble pas recevoir de données. De plus, je reçois automatiquement le message ci-dessous relatif à l&#039;execution du script.

Avez-vous une suggestion?



usage: mktemp [-d] [-q] [-t prefix] [-u] template ...
       mktemp [-d] [-q] [-u] -t prefix 
/Applications/assp/assp-stat/zabbix-postfix.sh: line 21: 1: ambiguous redirect
File /tmp/zabbix-postfix-offset.dat cannot be created. Check your permissions.
usage: rm [-f &#124; -i] [-dPRrvW] file ...
       unlink file</description>
		<content:encoded><![CDATA[<p>Bonjour,<br />
j&#8217;ai une question à propos de l&#8217;utilisation du cron. Si je lance le script manuellement avec la commande &#8216;sudo /Applications/assp/assp-stat/zabbix-postfix.sh&#8217;, les données sont envoyées et retranscrites dans mon graph zabbix. Par contre, si je laisse le cron lancer le script toutes les 5 min. le graph ne semble pas recevoir de données. De plus, je reçois automatiquement le message ci-dessous relatif à l&#8217;execution du script.</p>
<p>Avez-vous une suggestion?</p>
<p>usage: mktemp [-d] [-q] [-t prefix] [-u] template &#8230;<br />
       mktemp [-d] [-q] [-u] -t prefix<br />
/Applications/assp/assp-stat/zabbix-postfix.sh: line 21: 1: ambiguous redirect<br />
File /tmp/zabbix-postfix-offset.dat cannot be created. Check your permissions.<br />
usage: rm [-f | -i] [-dPRrvW] file &#8230;<br />
       unlink file</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Zabbix : monitorer un serveur Postfix par lls</title>
		<link>http://blog.hbis.fr/2012/03/30/zabbix-postfix_monitoring/comment-page-1/#comment-1295</link>
		<dc:creator>lls</dc:creator>
		<pubDate>Fri, 27 Apr 2012 14:29:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4687#comment-1295</guid>
		<description>&lt;a href=&quot;#comment-1294&quot; rel=&quot;nofollow&quot;&gt;@lls&lt;/a&gt; 
J&#039;ai enfin compris comment importer les .xml

Pardon pour la multiplication des posts</description>
		<content:encoded><![CDATA[<p><a href="#comment-1294" rel="nofollow">@lls</a><br />
J&#8217;ai enfin compris comment importer les .xml</p>
<p>Pardon pour la multiplication des posts</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Zabbix : monitorer un serveur Postfix par lls</title>
		<link>http://blog.hbis.fr/2012/03/30/zabbix-postfix_monitoring/comment-page-1/#comment-1294</link>
		<dc:creator>lls</dc:creator>
		<pubDate>Fri, 27 Apr 2012 14:13:39 +0000</pubDate>
		<guid isPermaLink="false">http://blog.hbis.fr/?p=4687#comment-1294</guid>
		<description>Merci, je comprends mieux.
Toute dernière question, le fichier template_Postfix.xml doit de trouver dans le dossier &quot;/././zabbix/frontends&quot;?</description>
		<content:encoded><![CDATA[<p>Merci, je comprends mieux.<br />
Toute dernière question, le fichier template_Postfix.xml doit de trouver dans le dossier &laquo;&nbsp;/././zabbix/frontends&nbsp;&raquo;?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

