J'ai récemment commencé à bosser sur un projet nécessitant des Thread. Pour accéder à ceux-ci, j'ai eu besoin de désinstaller ma version de Wamp car je ne trouvais pas les dll qui convenaient.
Je suis donc passé d'une version 5.4.12 à 5.5.12
J'ai donc pu installer les dll de Thread nécessaire.
Après cela, j'ai pu constater le fonctionnement de mon programme nécessitant des Threads qui crééent chacun d'entre eux un fichier dans le répertoire www en ne précisant pas de chemin dans le fopen.
Durant mon travail sur mon programme, j'ai du redémarrer plusieurs fois mon ordinateur car mes threads s'arrêtaient bien, mais ma fonction stream_copy_to_stream ne se fermaient pas avec le fclose. Donc, même avec le programme fermé, la copie de flux continuaient à l'infini (d'où les redémarrages pour arrêter la copie de flux).
Au bout d'un moment, lors de mes tests, j'ai pu constater que mon fopen ne marchait plus. Ou du moins, je le croyais. Mon fopen créé en fait un fichier dans wamp/bin/apache/apache2.4.9/
Je ne comprends pas pourquoi, sachant que même avec une réinstallation complète de wamp, le problème persiste.
Sauriez-vous doù cela peut venir? Sachant que ce code est la fonction run de mon Thread?
ma conf:
Windows 7 64 bits Wampserver: 2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b L'icone de wamp est vert et reste vert à chaque redémarrage wamp ou redémarrage pc J'ai accès à ma page localhost et phpmyadmin
Voila voila, merci d'avance pour essayer de m'aider
Utilisez des chemins absolus complets et non pas relatifs. Votre « $fp = fopen("./test.mp3","w+" » crée le fichier dans le dossier courant au moment de l'appel à la fonction.
Vous pouvez utiliser $_SERVER['DOCUMENT_ROOT'] qui donne toujours, où qu'il se trouve, la racine du site.
Remarque : cela n'a pas grand chose à voir avec Wampserver.
Citation Unisa J'ai récemment commencé à bosser sur un projet nécessitant des Thread.
Des Threads ???
Pouvez-vous m'expliquer comment vous procéder pour gérer depuis WampServer des tâches (des threads) ?
Normalement, il vous faut créer un processus qui va gérer un ensemble de tâche. Il y aura une tâche principale que l'on nomme "maitre" dont la fonction est de gérer les tâches que l'on nomme 'esclaves".
Ceci se nomme du multithreading et en bon français du multi-tâche. A ma connaissance, cela n'est pas possible de faire cela en php 5, voire en 6 !!!
Inversement, en 'C' ou en 'C++', c'est faisable de déclencher et de gérer des tâches écrites en Php. Mais la condition première est d'avoir plusieurs cœurs à sa disposition pour faire du multi-tâche. Et surtout d'avoir le contrôle du système de votre ordinateur, ce qui n'est pas possible avec Php. En effet, Php n'interfère normalement pas avec votre OS, pour des raisons de sécurités.
@+
---------------------------------------------------------------------------------------------------------------------------------------------------------------- Mon site : [www.jcz.fr]
Je connais cette méthode, (document root), mais ce que je ne comprends pas c'est pourquoi le dossier courant est changé comme cela... surtout, pourquoi aller dans les bin de apache...
> mais ce que je ne comprends pas c'est pourquoi le dossier courant est changé comme cela... > surtout, pourquoi aller dans les bin de apache... C'est peut-être comme pour setlocale();
Avertissement
L'information locale est maintenue par processus, non par thread. Si vous faites fonctionner PHP sur un serveur multi-threadé comme IIS ou Apache sur Windows, vous pourriez obtenir des changements soudains des configurations locales pendant qu'un script fonctionne, même si celui-ci n'appelle jamais la fonction setlocale(). Ceci survient à cause des autres scripts qui fonctionnent dans des threads différents du même processus.
L'information du dossier courant est - peut-être - maintenu, lui aussi par processus et non par thread et il est donc nécessaire de définir le chemin absolu complet du fichier.