Rechercher : dans
Par :

[PhP:Error]Notice: fwrite(): send of 16 bytes

Dernière réponse le 21 mar 2006 à 17:13:19 P@, le 7 mar 2006 à 17:12:15 
 Signaler ce message aux modérateurs

Bonjour,

J'ai fait une application web en PhP.
Malheureusement au cour d'un script elle renvoie ceci

Notice: fwrite(): send of 16 bytes failed with errno=0 Une connexion existante a dû être fermée par l'hôte distant. in C:\PROGRA~1\EASYPH~1\php\pear\Net\Socket.php on line 258


Alors
1- Je ne sais pas ce que ca veux dire
2- Je ne sais pas a quoi serve les sockets, donc je ne pense pas y avoir touché.

Le script qui renvoie ca envoie des mail .... pour info
Et aprés l'erreur il continue de tourner !! ..:::P@ ... a tras, a PoOf ou a chou :::..

Meilleures réponses pour « [PhP:Error]Notice: fwrite(): send of 16 bytes » dans :
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
Cacher les erreurs en PHP VoirRappelons avant toute chose, qu'il est toujours préférable, dans n'importe quel langage de programmation, de corriger les problèmes qui déclenchent les erreurs, avant d'essayer de masquer les erreurs. En effet, le fait de masquer les erreurs...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :

1

kilian, le 7 mar 2006 à 23:02:16

Tu utilises fwrite sur quoi?

Répondre à kilian

2

P@, le 8 mar 2006 à 10:26:35

Ben c'est dans un des doc de PEAR a priori ...
dans ce doc il est écrit

    /**
     * Write a specified amount of data.
     *
     * @access public
     * @return mixed true on success or an error object otherwise
     */
    function write($data) {
        if (is_resource($this->fp)) {
            return fwrite($this->fp, $data);
        }
        return $this->raiseError("not connected");
    }


et moi je l'utilise l'or d'envoie de mail avec mail_queue de pear .
Qui fonctionne trés bien, mais comme mes mails sont lourd (pdf en piece jointe) ...
Je ne sais pas pourquoi ca fait ca :C

..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

3

kilian, le 8 mar 2006 à 17:48:51

Ok.

Et mail_queue() ça stocke les mail ou? Dans une base de données ou des fichiers?
Faudrait voir à quelle occasion sert cette fonction write finalement.

Répondre à kilian

4

P@, le 9 mar 2006 à 09:54:20

Il les stock en base ...

..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

5

P@, le 9 mar 2006 à 17:00:12

Dans un premier temps l'erreur apparaissait parce que je ne lui donnais pas le bon nombre d'item et maintenant parce qu'il n'as pas assez de temps pour tourner !! ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

6

kilian, le 10 mar 2006 à 23:32:35

Salut,

Tu entends quoi par item?
Et qu'est ce qui n'a pas assez de temps pour tounrer (et qui l'en empêche?).

Je manque de précision :-)

Répondre à kilian

7

P@, le 13 mar 2006 à 09:51:04

Voilà ...
Dans Mail_Queue pour envoyer les mails je fait

        $nombre_max_de_mails = $R1;
        $file_denvoi_de_mail =& new Mail_Queue($db_options, $mail_options);
        $file_denvoi_de_mail->sendMailsInQueue($nombre_max_de_mails);

Mais $R1 représentait le nombre de mail de 0 à n et non de 1 à n donc le total n'était pas le même
Pour faire tourner la classe avec tous mes messages il me faut au moins 7h !!!
Car plus il y a de message a envoyé plus ca prend de temps et plus les messages sont lourd plus c'est long !!!
et c'est pour ca que ca me géne ... normalement le max_execution_time est à 30 seconde et pour bien faire il faut que je l'augmente considéréablement.
..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

8

kilian, le 13 mar 2006 à 17:54:41

Qu'est ce qui prend du temps?
Mettre les mail en file d'attente ou bien les envoyer au final?

Répondre à kilian

9

P@, le 14 mar 2006 à 11:03:20

Les envoyer au final, c'est dans cette phase qu'il me fait parfois l'erreur.
Je l'ai fait tournée une bonne partie de la nuit dernière sans aucune erreur, mais hier aprés midi il m'a refait l'erreur !!! ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

10

kilian, le 14 mar 2006 à 11:13:10

Et pourqui tu n'envoies pas les mails plus régulièrement?

Répondre à kilian

11

P@, le 14 mar 2006 à 11:21:30

C'est à dire ?? ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

12

kilian, le 14 mar 2006 à 11:26:11

Ben au lieu de totu envoyer d'un coup la nuit, pourquoi ne pas en envoyer la moitié à midi et l'autre à minuit?

Répondre à kilian

13

P@, le 14 mar 2006 à 11:50:32

Oui mais comment le faire automatiquement ??
moi, je le lance en cliquant sur le bouton mais je préfére ne pas avoir a cliquer 2 fois. ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

14

kilian, le 14 mar 2006 à 14:12:52

Tu le lances depuis une page web?
Tu peux probablement le lancer en ligne de commande au lieu de passer par une page web (php fonctionne aussi en ligne de commande).

En fait ça dépend, tu lances cette page depuis la machine ou elle est hebergée?

Répondre à kilian

15

P@, le 14 mar 2006 à 14:45:21

C'est une application web en local sur mon poste.
Alors oui, je la lance a partir d'une page web.

Par contre, je ne savais pas pour le php en ligne de commande ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

16

kilian, le 14 mar 2006 à 14:50:45

Et c'est bien pratique:

php nom_du_fichier.php

Pourvu que php.exe soit dans ta variable PATH
Exemple avec windows 2000:
http://www.clubic.com/wiki/Astuces_pour_Windows#Modification­_du_path_de_Windows_2000

Répondre à kilian

17

P@, le 14 mar 2006 à 14:59:01

J'ai easyphp dans ma variable PATH

tu pourrais m'en dire plus sur le php en ligne de commande stp.
Parceque je n'ai aucune idée de comment ca marche et ce que je peux faire ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

18

kilian, le 14 mar 2006 à 15:13:35

Si easyphp est dans ton path, alors j'espère que son repertoire php est aussi dedans.

A vrai dire c'est simple d'utilisation:
Tu ouvres une fenêtre dos, tu va dans le repertoire ou se trouve ton fichier php (par la biais de la comande cd) puis quand tu y es, tu tapes:

php nom_du_fichier.php

Répondre à kilian

19

P@, le 14 mar 2006 à 15:16:14

Mais on ne peut pas automatiser ??

genre, si je lance l'action 1 à 10h alors il lancera tout seul l'action 2 à 18h ... ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

20

kilian, le 14 mar 2006 à 17:50:52

Hé si justement: grâce à la ligne de commande .

Sur les sytèmes UNIX tu as un logiciel appelé crontab qui te permet de lancer des lignes de commandes à l'heure et au jour que tu veux.
Sous windows il existe des logiciels qui font la même chose comme pycron:
http://www.kalab.com/freeware/pycron/pycron.htm

Répondre à kilian

21

P@, le 15 mar 2006 à 10:37:14

Je suis entrain d'essayer.
J'ai hâte de voire le résultat :D ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

22

P@, le 15 mar 2006 à 12:17:02

J'ai télécharger pycron,
je lui ai demander de lancer le ficher
et rien ne se passe .......

j'ai mis
command le chemin vers mon *.php
Minute 17
hour 12
Day of Month 15
Month 3
...
et rien n'apparait, comment vérifier si action il y a ?? ..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

23

P@, le 15 mar 2006 à 12:20:40

Quand je fais comme tu as dis depuis les commandes dos

php ficher.php

alors il me répond
'php' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

24

P@, le 15 mar 2006 à 12:55:44

J'ai trouvé ca dans le ficher de log

Traceback (most recent call last):
  File "taskDialog.pyo", line 235, in OnTestexecbuttonButton
  File "pycron.pyo", line 112, in __init__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 15: ordinal not in range(128)
..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

25

kilian, le 15 mar 2006 à 18:03:47

'php' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.


Comme je te l'ai dis, il faut que le chemin vers php.exe soit inclus dans ta variable PATH.

php.exe devrait être situé dans un endroit qui ressemble à ça:

c:\Program Files\EasyPhp\php\bin

Répondre à kilian

26

P@, le 21 mar 2006 à 10:34:03

En effet, j'avais mis sur php.exe et non le répertoire concerné !!!
Bon, maintenant c'est fait mais j'ai une erreure dans une alerte WARNING
Unknown(): Unable to load dynamic library './php_cpdf.dll' - Le module spécifié est introuvalbe
C'est quoi ce fichier, il sert a quoi ?
Où je peut le trouver et où dois je le mettre pour qu'il soit trouvé ??

Mais il execute tout de même le fichier
merci pour ton aide

..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@