Aller au contenu

Ne pas executer un script apres x secondes


Sujets conseillés

Posté

Bonjour,

Comment stopper l'exécution d'un script après un délais bien précis?

Le but du jeu est de stopper l'exécution d'un script publicitaire qui s'arrêtera si la publicité n'a pas répondu après x secondes, pour ne pas "freezer" mon site, et attendre indéfiniment le serveur de publicité dans le vide, et avoir un site bloqué!

Merci.

Cordialement.

Posté

Ce sont des publicitées Javascript, mais mon intégration est en PHP, et c'est donc PHP et Mysql qui va aller dire quelle publicitées placer et afficher en fonction de ma rubrique.

Je préfère le faire en PHP, pour ceux qui désactivent Javascript.

Posté

Le plus simple est dans ce cas de mettre les pubs dans une iframe ...

Posté (modifié)

Un autre solution : tu utilises ajax pour charger ta zone de publicité, indépendamment du reste du site.

Si le script gérant la pub de répond pas, dans le pire des cas tu auras une div vide (ou avec un contenu par défaut) , mais cela n'empêchera pas de consulter le reste de ton site !

Edit:

Je préfère le faire en PHP, pour ceux qui désactivent Javascript.

Je n'avais pas vu désolé !

Modifié par K-Ola
Posté

Pour Iframe, c'est non, non valide le code, et j'aimerai bien le faire en php.

En ajax, je vais peu être le faire...a voir.

Posté (modifié)

J'ai récupérer ca:

// Timeout in seconds
$timeout = 5;

$URL="http://fr.a2dfp.net/ad?s=".$row_pub['id']."&m=js&ncb=".$a2dRandom."";

$fp = fsockopen("$URL", 80, $errno, $errstr, $timeout);

if ($fp) {
fwrite($fp, "GET /file.php HTTP/1.0\r\n");
fwrite($fp, "Host: $URL\r\n");
fwrite($fp, "Connection: Close\r\n\r\n");

stream_set_blocking($fp, TRUE);
stream_set_timeout($fp,$timeout);
$info = stream_get_meta_data($fp);

while ((!feof($fp)) && (!$info['timed_out'])) {
$data .= fgets($fp, 4096);
$info = stream_get_meta_data($fp);
ob_flush;
flush();
}

if ($info['timed_out']) {
echo "Connection Timed Out!";
} else {
echo '<script type="text/javascript" src="'.$data.'"></script>';
}
}

mais j'ai ce message erreur:

Warning: fsockopen() [function.fsockopen]: unable to connect to http://fr.a2dfp.net/ad?s=xxxxx&m=js&am...b=xxxxx:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?)

Une idée ?

Modifié par olitax
Posté (modifié)

J'ai fini par trouver comment faire, en utilisant la librairie cURL

$URL="http://example.com";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
$data = curl_exec($ch);
curl_close($ch);

if(ereg("HTTP/1.1 200 OK", $data))
{
echo '<script type="text/javascript" src="http://example.com"></script>';
}

Donner moi votre retour sur ce code ;)

Modifié par ZuckBin
Posté

Si le but est juste de gérer le timeout PHP, il y a une variable pour ça :

ini_set('default_socket_timeout', 3);
@readfile('http://url.de.ta/pub.php');

Par contre pour ma part je ne vois pas l'intérêt de ta méthode :

- site plus lent, aucun parallélisme et empêche certainement toute mise en cache de tes propres pages

- l'internaute risque de ne pas être "tracké" comme il faut (IP du serveur + pas de cookie), donc tu risques de ne pas être payé

Tout ça pour quoi ?

- éviter d'utiliser du javascript alors qu'une grande partie des tags des régies l'impose

- éviter d'utiliser une iframe parce que ce ne serait pas "valide". Tiens c'est nouveau ça... à moins que tu utilises du XHTML Strict, mode dans lequel les publicités des régies ne fonctionnent pas non plus (document.write oblige...)

A mon avis tu t'embêtes pour de mauvaises raisons là.

Posté

En javascript, c'est l'intégration toute simple du tag de pub via <script src="XXXX" type="XXX"></script>.

PS : du XHTML "strict" avec un content-type en text/plain alors, non ?

Posté (modifié)

J'ai ca comme doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

et c'est bien du type text/plain

Modifié par ZuckBin
Posté

J'avoue ne pas comprendre ta dernière remarque, à a partir du nomment ou je vais utilisé sur ma page web une iframe, mon code ne sera plus valid, et comportera des erreurs ;)

Posté

Je n'ai pas été très clair mais comme le dit captain_torche il te suffit de changer de doctype, vu que de toutes façons tu n'utilises pas du "vrai" XHTML.

Posté
Hello,

Effectivement, je suis en Xhtml strict, si tu as la méthode pour le faire en Js, je prend ;)

adsense, entres autres, n'est pas valide xhtml strict, donc si tu envoies ta page avec adsense en strict, tu ne verras pas les pubs affichées.

et quand je parle de strict, c'est aussi, et surtout, les header envoyés en xhtml strict et non en html/text

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...