J'ai 2 scripts courts. Le premier, un script awk, traite un gros fichier et imprime dans un tube nommé 'myfifo.dat'. La seconde, un script Perl, exécute une commande LOAD DATA LOCAL INFILE 'myfifo.dat'...
. Ces deux scripts fonctionnent quand ils sont exécutés localement comme ceci:Blocage de tuyau nommé avec personne utilisateur
lee.awk big.file &
lee.pl
Cependant, quand je l'appelle ces scripts à partir d'une page Web de PHP, les blocs de canal nommé:
$awk="/path/to/lee.awk {$_FILES['uploadfile']['tmp_name']} &";
$sql="/path/to/lee.pl";
if(!exec($awk,$return,$err)) throw new ZException(print_r($err,true)); //blocks here
if(!exec($sql,$return,$err)) throw new ZException(print_r($err,true));
Si je modifie le awk et les scripts Perl afin qu'ils écrivent et lisent dans un fichier normal, tout fonctionne bien à partir de PHP. Les autorisations sur le fifo et le fichier normal sont 666 (à des fins de test). Ces opérations s'exécutent beaucoup plus rapidement à travers un tuyau nommé, donc je préfère en utiliser un. Des idées pour le débloquer?
ps. Dans le cas où vous vous demandez pourquoi je vais à toute cette aggravation, voir this SO question.
Je n'ai aucune connaissance spécifique pour le problème posé, mais mes tripes me disent, que c'est une voie de recherche prometteuse. +1 – Boldewyn