PHP : lire un fichier A et le recopier dans un fichier B avec proc_open()
khitan72
Messages postés12Date d'inscriptionjeudi 5 juillet 2007StatutMembreDernière intervention 5 janvier 2009
-
3 sept. 2008 à 13:38
khitan72
Messages postés12Date d'inscriptionjeudi 5 juillet 2007StatutMembreDernière intervention 5 janvier 2009
-
4 sept. 2008 à 14:20
bonjour ,
je cherche a comprendre le fonctionnement de la fonction proc_open() et de l'utilisation de pipe en r/w
pour essais, je souhaites lire un fichier_A.txt pour le recopier dans un fichier_B.txt ( 3 lignes de characteres dedans)
avec le script suivant, je ne peux afficher le contenu des pipes ni ecrire dans les fichiers
comment ouvre t'on ce fichier_A. txt par cette commande ? proc_open($cmd, descript,$pipe)
quelle est la commande $cmd
a terme, j'aimerais pouvoir utiliser proc_open pour ouvrir un port com en R/W
merci d'avance pour l'aide
<?php
$descriptorspec = array(
0 => array("pipe","r+"), // stdin est un pipe où le processus va lire
1 => array("pipe","w+"), // stdout est un pipe où le processus va écrire
2 => array("file","error_output.txt", "a+"), // stderr est un fichier
);
# le fichier error output me repond que la commande fichier_A n'est pas une commande valide #
yoman64
Messages postés962Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 2 août 20102 3 sept. 2008 à 14:19
Salut,
Oula, je crois que tu n'as pas trop compris ce que faisait la fonction proc_open C'est pour exécuter un exécutable et ouvrir des descripteurs pour le contrôler, pas un fichier texte. De toute façon ta ligne ne fait aucun sens.
$process = proc_open(`fichier_A..txt,"r+`, $descriptorspec, $pipes);
Pourquoi il y a des backtick ? et puis un fichier_A..txt n'est pas un nom valide pour un fichier de toute façon, peut pas y avoir .. de suite.
Au moins la courte description:
proc_open —
Exécute une commande et ouvre les pointeurs de fichiers pour les entrées / sorties
Si tu veux ouvrir un fichier c'est avec fopen qu'il faut voir.
-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org
khitan72
Messages postés12Date d'inscriptionjeudi 5 juillet 2007StatutMembreDernière intervention 5 janvier 2009 3 sept. 2008 à 14:47
merci
en fait fopen marche pour ouvrir un fichier texte, mais mon but est de comuniquer avec un GSM par AT cde
et je n'arrive pas a ouvrir le port com pour ecrire et lire les données (envoie ATZ + CRLF reception OK+CRLF)
j'ai trouvé ce le bout de code ci dessus, et j'essayais de le comprendre , en imaginant que les caracteres d'un fichier
peuvent etre lu comme sur un port com .
yoman64
Messages postés962Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 2 août 20102 3 sept. 2008 à 22:03
Hello,
Ah si c'est pour controller un port COM il va te falloir utiliser un programme externe ou bien une extension PHP.
L'extension qui pourrait t'aider est Direct IO.
Tu trouveras plus d'informations à cette adresse: http://ca.php.net/manual/en/intro.dio.php
-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org
yoman64
Messages postés962Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 2 août 20102 4 sept. 2008 à 04:37
Salut,
J'y ai repensé et il me semble que fopen suffit pour contrôler un port com, je viens de faire quelques tests et ça semble fonctionner, suffit de l'ouvrir en mode w+
-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org
Vous n’avez pas trouvé la réponse que vous recherchez ?
khitan72
Messages postés12Date d'inscriptionjeudi 5 juillet 2007StatutMembreDernière intervention 5 janvier 2009 4 sept. 2008 à 14:20
bonjour,
je ne peux pas ouvrir mon COM3 avec fopen
ou sinon la fonction fread met trop de temps à attendre mon caracteres de reponse .
et pour j'ai une erreur fatale si je prend la fonciton dio_open
malgre une mise à jour de php ini et verifié que la dll est presente dans les extensions sous php/ext
je vais chercher encore. y'a pas de raison que si j'arrive a communiquer avec un port com sous excel/ VBA je ne puisse pas y arriver avec du php.
cdlt
voila ce que j'ai avec fopen,
'mode com3: BAUD=115200 PARITY=N data=8 stop=1 xon=off';
<?php
$fp = fopen ('COM3', "w+");
if (!$fp) {
echo "Port not opened.";