Bonjour,
J'aurais conseil à vous demander au sujet d'une petite problématique à laquelle je suis confronté.
Pour vous mettre en situation :
Admettons que j'ai un site bonjour.com, ou je permet à mes visiteurs de creer des sous domaines, pseudo.bonjour.com. Ceci leur permettrait d'upload des images, qui sont physiquement stocké sur un serveur static.bonjour.com. Donc dans les url pseudo.bonjour.com, les url des images uploadé sont static.bonjour.com/xxx/xxx.jpg. Le but est de modifier ces URL à la volé, sans dévoiler la véritable url.
Le htaccess vers un php qui renvoie l'image en fopen n'est pas envisageable, pour des soucis de perf évidemment.
Donc en fait la problématique de base c'est de pouvoir faire un daemon qui consommerait pas et qui capturerait STDIN pour renvoyer les bonnes URL.
Nous avons donc commencer à tester avec ca : un daemon qui serait lancé à chaque session apache pour chaque visiteur, qui ressemblait à ca :
Problème, consommation 100% du CPU.
On à test de bosser avec les signaux unix
On à trouvé ce bout de code sur le net, qui est parfait niveau perf, par contre le case STDIN qui est de nous ne fonctionne pas (ca aurait été trop beau), car il n'y à pas de signal STDIN.
Donc ma 1ere question est, est-ce qu'il est possible de générer un signal au STDIN, que nous pourrions capturer dans le script ?
Sinon, on à pensé aux sockets, mais l'idée serait d'ouvrir un socket vers STDIN plutôt que vers un hôte, donc... comment faire ?
Je sais pas si j'ai été très clair, même pour moi ca reste assez obscur, je ne suis qu'un ptit dev php et l'utilisation des signaux, sockets etc remontent à très loin, en cours et en c++..
N'hésitez pas si vous avez des questions,
merci !
J'aurais conseil à vous demander au sujet d'une petite problématique à laquelle je suis confronté.
Pour vous mettre en situation :
Admettons que j'ai un site bonjour.com, ou je permet à mes visiteurs de creer des sous domaines, pseudo.bonjour.com. Ceci leur permettrait d'upload des images, qui sont physiquement stocké sur un serveur static.bonjour.com. Donc dans les url pseudo.bonjour.com, les url des images uploadé sont static.bonjour.com/xxx/xxx.jpg. Le but est de modifier ces URL à la volé, sans dévoiler la véritable url.
Le htaccess vers un php qui renvoie l'image en fopen n'est pas envisageable, pour des soucis de perf évidemment.
Donc en fait la problématique de base c'est de pouvoir faire un daemon qui consommerait pas et qui capturerait STDIN pour renvoyer les bonnes URL.
Nous avons donc commencer à tester avec ca : un daemon qui serait lancé à chaque session apache pour chaque visiteur, qui ressemblait à ca :
$fp = fopen("php://stdin", "r");
while (1)
{
if( trim(fgets($fp)) )
{
// Traitement
}
}
Problème, consommation 100% du CPU.
On à test de bosser avec les signaux unix
<?php
declare(ticks = 1);
// signal handler function
function sig_handler($signo)
{
switch ($signo) {
case SIGINT:
// handle shutdown tasks
echo "Interruption (CTRL+C)...\n";
//exit;
break;
case STDIN:
echo "Ohoh\n";
default:
// handle all other signals
echo $signo."\n";
break;
}
}
echo "Installing signal handler...\n";
// setup signal handlers
pcntl_signal(SIGINT, "sig_handler");
}
On à trouvé ce bout de code sur le net, qui est parfait niveau perf, par contre le case STDIN qui est de nous ne fonctionne pas (ca aurait été trop beau), car il n'y à pas de signal STDIN.
Donc ma 1ere question est, est-ce qu'il est possible de générer un signal au STDIN, que nous pourrions capturer dans le script ?
Sinon, on à pensé aux sockets, mais l'idée serait d'ouvrir un socket vers STDIN plutôt que vers un hôte, donc... comment faire ?
Je sais pas si j'ai été très clair, même pour moi ca reste assez obscur, je ne suis qu'un ptit dev php et l'utilisation des signaux, sockets etc remontent à très loin, en cours et en c++..
N'hésitez pas si vous avez des questions,
merci !