J'utilise php5.5 sur mon serveur web. Maintenant, je veux utiliser des pthreads. Voici ma config php: http://dd19010.kasserver.com/infophp.php55
Après avoir implémenté ce code .....
<?php
class AsyncOperation extends Thread
{
public function __construct($threadId)
{
$this->threadId = $threadId;
}
public function run()
{
printf("T %s: Sleeping 3sec\n", $this->threadId);
sleep(3);
printf("T %s: Hello World\n", $this->threadId);
}
}
$start = microtime(true);
for ($i = 1; $i <= 5; $i++) {
$t[$i] = new AsyncOperation($i);
$t[$i]->start();
}
echo microtime(true) - $start . "\n";
echo "end\n";
?>
... le problème est cette erreur même: Erreur fatale: la classe 'Fil' n'est pas trouvée dans. Dois-je inclure certains include_once ou quelque chose de similaire pour le faire fonctionner? Que dois-je faire ??
Bonjour, j'ai rencontré ce problème et j'ai réussi à le résoudre.
First, considérons la version VC de votre PHP et la version VC d'extension. Dans la mienne, j'ai joint l'extension pthreads.dll
à la version VC14 de http://windows.php.net/downloads/pecl/releases/pthreads/ mais ma version PHP VC est VC11. Recherchez la version inférieure qui correspond à la version VC de votre PHP.
Second, vous avez peut-être manqué l'étape 3 à la page PHP. Il est indiqué que vous devez copier le pthreadVC2.dll
dans un autre dossier. Voici les instructions complètes.
Découvrez quelle est votre version de 'PHP Extension Build' en utilisant phpinfo (). Vous pouvez utiliser ceci - http: // localhost /? Phpinfo = 1
Téléchargez les pthreads qui correspondent à votre version de php (32 bit ou 64 bit) et à votre extension de php (actuellement utilisé VC11). Utilisez ce lien pour le téléchargement - http://windows.php.net/downloads/pecl/releases/pthreads/
Extrayez le Zip - Déplacez php_pthreads.dll vers le répertoire 'bin\php\ext \' . Déplacez pthreadVC2.dll dans le répertoire 'bin\php \' . Déplacez pthreadVC2.dll dans le répertoire 'bin\Apache\bin' . Déplacez pthreadVC2.dll dans le répertoire 'C:\windows\system32'.
Ouvrez php\php.ini et ajoutez extension = php_pthreads.dll
Référence: https://secure.php.net/manual/fr/pthreads.installation.php
Votre phpinfo montre que vous avez php avec la sécurité des threads désactivée. Vous devez installer une version de php qui soit thread-safe pour utiliser pthreads. Cela peut ou non résoudre votre problème actuel.
Vous devrez peut-être également copier le pthreadsVC2.dll
dans le répertoire bin de votre service Web.
/etc/php55/fpm/
Vous recherchez le dossier contenant le fichier php.ini.
Assurez-vous que la ligne a été ajoutée au fichier php.ini:
extension=php_pthreads.dll
1) Créer un fichier php
phpinfo (); -> Run
Exemple: Info
Version PHP: 5.6.31
Compilateur: MSVC11 (Visual C++ 2012)
Architecture: x64
2) Aller sur le site internet:
http://windows.php.net/downloads/pecl/releases/pthreads/
Exemple de fichier 2.0.9
Compilateur: VC11
Architecture: x64
php_pthreads-2.0.9 -5.6 -ts -vc11 -x64 .Zip téléchargé.
3) Extrayez php_pthreads.dll et pthreadVC2.dll.
wamp\bin\php\php5.6 .31\ext\-> copy php_pthreads.dll
wamp\bin\php\php5.6 .31\-> copy pthreadVC2.dll
wamp\bin\Apache\apache2.4.27\bin -> copy pthreadVC2.dll
4) Maintenant, éditez php.ini
wamp\bin\Apache\apache2.4.27\bin\php.ini\-> Ajouter une extension = php_pthreads.dll
wamp\bin\php\php5.6 .31\php.ini\-> Ajouter extension = php_pthreads.dll
5) Redémarrez maintenant Wamp
J'utilise WAMP et trouve que le pthreadVC2.dll devrait plutôt aller dans le dossier Apache:
C:\wamp\bin\Apache\apache2.4.9\bin
Contrairement à ce qui est écrit dans README.md , vous n'avez pas besoin de l'avoir dans le dossier PHP, mais le php_pthreads.dll devrait quand même aller à:
C:\wamp\bin\php\php5.5.12\ext
Après cela, recherchez dans ce fichier:
C:\wamp\bin\Apache\apache2.4.9\bin\php.ini
Pour ;extension=php_pgsql.dll
et ajoutez extension=php_pthreads.dll
dans une nouvelle ligne après celle-ci (oui, il s'agit du fichier bin\php.ini du dossier Apache et non du dossier PHP).
Quittez WAMP et redémarrez-le. Vous devriez maintenant voir dans le menu WAMP sous PHP> PHP extensions} _, la nouvelle extension php_pthreads.
Par défaut, les threads ne sont pas implémentés en PHP et, selon votre phpinfo, il ne semble pas être chargé. Consultez le manuel PHP pour savoir comment configurer/configurer le module.
Je pense que vous devez inclure les extensions dans le fichier php.ini, car je ne le vois pas dans la configuration. Vous pouvez voir que chaque bibliothèque a sa propre section, comme MySQL, mais il n'en existe pas pour les threads. Je n'ai jamais utilisé de thread, mais cela devrait être un bon point de départ.