Lorsque j'utilise PHP pourphp, exec, trier commande, fichier de sortie « apparaît » tronquée, mais le fichier d'entrée n'est pas complètement lu jusqu'à EOF
exec('sort /var/www/website/file_in.txt -o /var/www/website/file_out.txt');
le fichier qui est sortie de la commande de tri est trunacted
taille du fichier d'entrée= 2442541
sortie de taille du fichier = 1.146.881
J'ai également remarqué, lors de l'utilisation de la fonction php filesize (file_in.txt), la valeur renvoyée = 1,146,881, pas la taille correcte comme indiqué dans une session de terminal. J'ai appelé clearstatcache() avant d'appeler filesize(). De manière intéressante, la taille de fichier indique la taille de file_in comme étant la même valeur que file_out est tronquée. Je cours une version PHP 64 bits de Linux _x86_64, donc j'ai pensé que cela élimine le problème de limitation de taille de fichier 32 bits pour les fichiers gt 2MB.
Quand je lance la commande de tri dans une session de terminal en tant que données www-utilisateur, le fichier de sortie est la même taille que le fichier d'entrée, pas de troncature.
J'ai essayé d'écrire un script shell pour appeler à partir exec, en espérant qu'il contournerait une limite tampon possible php, mais il a le même fichier de sortie tronquée.
J'ai TOP en cours d'exécution dans un terminal séparé pour regarder CPU et utilisation de la mémoire, mais depuis le coammdn lorsqu'il est exécuté dans un terminal ne tronque pas la sortie, ce qui semble être un problème de PHP.
Existe-t-il une configuration obscure de configuration .ini que je devrais vérifier pour résoudre ce problème?
Merci
Informations additionnelles: J'ai réalisé le fichier de sortie n'est pas tronquée, mais plutôt, le fichier d'entrée n'est pas lu dans son intégralité jusqu'à ce que EOF.
Peut être cette aide: http://www.computerhope.com/unix/usort.htm, trouver une phrase "TAILLE peut être suivie par le suffixes multiplicatifs suivants " –
merci pour votre suggestion, mais cette page Web ne liste même pas l'option -S (taille de tampon), qui est ce que SIZE se rapporte à. Cependant, lorsque vous avez étudié votre suggestion, j'ai trouvé cette page Web: https://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html, qui donne une meilleure description de la taille de la mémoire tampon. utile. Je vais essayer le test de taille de tampon suivant. J'ai également appris qu'il existe une option --debug, qui peut aider à comprendre la troncature. –
N.B> --debug ne peut pas être utilisé en même temps -o le fichier de sortie est utilisé. débogage utilise stndout (c'est-à-dire un écran de session terminal) –