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

P@ Messages postés 1137 Date d'inscription   Statut Membre -  
kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   -
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 :::..

26 réponses

  • 1
  • 2
Résumé de la discussion

Le sujet porte sur une erreur PHP liée à fwrite et à une connexion socket: "Notice: fwrite(): send of 16 bytes failed with errno=0" indiquant qu'une connexion distante a été fermée. Plusieurs participants proposent des pistes techniques et pratiques: vérifier le fonctionnement des sockets, tester le script en écrivant dans un fichier de test, et envisager une exécution planifiée des envois via cron ou PyCron. D'autres échanges recommandent de répartir les envois d'emails et de rappeler que PHP s'exécute via un interpréteur, en montrant l'utilisation d'un lanceur de script en ligne de commande et des options Windows ou Unix.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    mais on ne peut pas automatiser ??

    genre, si je lance l'action 1 à 10h alors il lancera tout seul l'action 2 à 18h ...
    2
  2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Tu utilises fwrite sur quoi?
    0
  3. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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.
    0
  4. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    il les stock en base ...

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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 !!
    0
    1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      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 :-)
      0
      1. P@ Messages postés 1137 Date d'inscription   Statut Membre 185 > kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention  
         
        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.
        0
      2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Qu'est ce qui prend du temps?
        Mettre les mail en file d'attente ou bien les envoyer au final?
        0
  7. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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 !!!
    0
  8. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Et pourqui tu n'envoies pas les mails plus régulièrement?
    0
    1. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
       
      c'est à dire ??
      0
    2. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
       
      Ben au lieu de totu envoyer d'un coup la nuit, pourquoi ne pas en envoyer la moitié à midi et l'autre à minuit?
      0
  9. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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.
    0
  10. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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?
    0
  11. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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
    0
  12. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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
    0
  13. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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
    0
  14. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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
    0
    1. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
       
      je suis entrain d'essayer.
      J'ai hâte de voire le résultat :D
      0
  15. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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 ??
    0
  16. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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.
    0
  17. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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)
    
    0
  18. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    '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
    0
  19. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    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

    0
  20. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    je crois que j'ai un souci pour écrire la commande avec pycron
    j'ai fait : D:\monchemin>php send.php
    D:\monchemin php send.php
    php D:\monchemin\send.php
    et rien ne se passe !!
    Ca marche comment ??
    parce que sous "dos" ca marche
    0
  21. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Voici un exemple donné sur la page
    http://www.bigbluehost.com/article4.html
    0 23 * * 4 “C:\WINDOWS\System32\defrag.exe” c:

    Il y a d'abord 5 paramètres pour la date d'execution.
    Ensuite il vaut mieux préférer mettre le chemin complet vers php.exe (et bien mettre php.exe et non pas php) et mettre ce chemin entre guillemets.
    Puis en paramètre (comme avec le c: au dessus à la fin) tu mets le nom du fichier php (mais il va falloir qu'il le trouve ce fichier php, donc il va falloir mettre le chemin complet et mettre ce chemin entres guillemets s'il y a un espace dedans.
    0
  • 1
  • 2