<?php
require "pkg.php";
if(isset($_GET['robot']))
{
while(!file_exists("stop_relance.txt")){
$bd->lock(); // pour garantir l'exclusion mutuelle et éviter d'avoir une infinité de processus sur le serveur
if($site = $bd->exec("SELECT * FROM site WHERE etat < 3 ORDER BY etat DESC LIMIT 0,1"))
{
$bd->unlock();
lance_moteur();
sleep(5); // permet au sous processus de poser le verrou
}
else
{
echo "<b>Plus de site trouvé</b>";
exit(0); // sinon peu probable (plus de site à indexer trouvé dans la base)
}
}
}
else
{
$bd->lock();
$site = $bd->exec("SELECT * FROM site WHERE etat < 3 ORDER BY etat DESC LIMIT 0,1");
$site = $site[1];
if($site)
$ls = new LecteurSite($bd,$site['url'],$site['etat']);
$bd->unlock();
}
function lance_moteur()
{
$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", "erreur_relance.txt", "w") // stderr est un fichier
);
$cwd = './';
$env = NULL;
$process = proc_open('php relance.php', $descriptorspec, $pipes, $cwd, $env);
}
?>
Le problème à l'air de venir de la fonction lance_moteur(), sinon je ne crois pas avoir de problème avec mes autres fonctions.$bd est une instance d'une classe maison, gérant mysql, et sinon le but de tout le site est de proposé un service de recherche d'images (comme google mais en incluant les avis des utilisateurs) (un petit coup de pub lol)