redirection sur la meme page - PHP - Programmation
Marsh Posté le 24-05-2005 à 11:32:33
headers already sent by (output started at /var/www/html/dump_table.php:16)
tout est là ... ou dans la doc php
header ne peut pas être appelé si tu as déjà écrit ne serait-ce que le plus petit caractère dans ta page.....
Marsh Posté le 24-05-2005 à 11:33:18
Je comprends pas ce que tu veux faire, franchement!
[edit]
Mais l'erreur est explicite, tu as déjà écrit quelquechose, donc il t'envoie chier.
Marsh Posté le 24-05-2005 à 11:35:59
Oki je savais pas qu'en fait il ne fallait rien ecrire pour pouvoir etre redirigé.
Car en fait ce que je veux faire c'est que j'ai un tableau de 5 elements à la premiere execution puis je fais des redirection sur la meme page en supprimant un element du tableau a chaque fois. Et bien entendu il y a un traitement à chaque fois sur le premier element du tableau...
Marsh Posté le 24-05-2005 à 11:40:17
faboubou a écrit : Oki je savais pas qu'en fait il ne fallait rien ecrire pour pouvoir etre redirigé. |
Tu pourrais pas faire tout connement une boucle pour traiter chaque élément de ton tableau?
Marsh Posté le 24-05-2005 à 11:41:40
skeye a écrit : |
Ca doit être un fan de list et du duo car/cdr
Marsh Posté le 24-05-2005 à 11:42:16
elianor a écrit : Ca doit être un fan de list et du duo car/cdr |
Euh oué mais php c'est pas du lisp hein!
Marsh Posté le 24-05-2005 à 11:44:12
non car en fait les elements de ce tableau sont des noms de tables et dans ces tables il y a plus d'un million d'enregistrement. Je fais donc ca pour alleger le serveur car lancer un script avec une boucle et plus de 5millions d'enregistrement voilà voilà quoi et l'exec time arriverai certainement...
Je ne suis pas non plus un newbie pour ne pas avoir pensé à une boucle mdr
Marsh Posté le 24-05-2005 à 11:46:49
faboubou a écrit : non car en fait les elements de ce tableau sont des noms de tables et dans ces tables il y a plus d'un million d'enregistrement. Je fais donc ca pour alleger le serveur car lancer un script avec une boucle et plus de 5millions d'enregistrement voilà voilà quoi et l'exec time arriverai certainement... |
...mais c'est gland, ça revient exactement au même, sauf que tu recharges ton script à chaque tour de boucle...
Marsh Posté le 24-05-2005 à 11:47:41
Oui mais si c'est long, il évite le timeout du à php ... Je crois que c'est ca qui l'embête ...
Marsh Posté le 24-05-2005 à 11:49:01
plainsofpain a écrit : Oui mais si c'est long, il évite le timeout du à php ... Je crois que c'est ca qui l'embête ... |
bah il le désactive, son timeout...
'fin bref, ça me parait franchement tordu...
Marsh Posté le 24-05-2005 à 11:49:09
ben au lieu de lancer un script de 5millions d'enregistrement, tu en lances 5 d'un millions. et les perf sont pas les memes... Tests déjà effectués et base de données déjà plantées lol. Surtout ensuite si tu as des accès concurrentiels...
Marsh Posté le 24-05-2005 à 11:50:05
et skeye tu desactive pas un timeout surtout sur un serveur de production...
Marsh Posté le 24-05-2005 à 11:52:04
faboubou a écrit : et skeye tu desactive pas un timeout surtout sur un serveur de production... |
c'est désactivable/modifiable dans le script lui-même, non (via un ini_set )? Ce traitement là, tu sais très bien qu'il est long, donc tu peux très bien adapter le timeout localement.
Que ce soit en prod ou pas.
Marsh Posté le 24-05-2005 à 11:53:07
Hmm c'est pas faux ça skeye, faboubou tente ça !
Marsh Posté le 24-05-2005 à 11:55:18
Je sais pas si c'est modifiable ou non mais moi ce que je souhaiterai faire c'est juste faire une redirection sur la meme page en faisant un traitement, puis retirer le premier element du tableau, puis refresh, puis traitement,...
Marsh Posté le 24-05-2005 à 11:56:25
mouais mais jsais pas si mon boss soit opé si il voit ce genre de chose exotique lol. Jvoulais juste savoir si mon truc etait possible avec un header ou non? Je pense que ca doit etre possible mais alors il faut qu'il n'yai aucun echo dans le script c'est ca?
Marsh Posté le 24-05-2005 à 11:56:38
faboubou a écrit : Je sais pas si c'est modifiable ou non mais moi ce que je souhaiterai faire c'est juste faire une redirection sur la meme page en faisant un traitement, puis retirer le premier element du tableau, puis refresh, puis traitement,... |
Bah si ça t'amuse, vazy, hein...
Mais je n'y vois franchement aucun intérêt...
Marsh Posté le 24-05-2005 à 11:57:42
faboubou a écrit : mouais mais jsais pas si mon boss soit opé si il voit ce genre de chose exotique lol. Jvoulais juste savoir si mon truc etait possible avec un header ou non? |
Tu crois que ton boss préfèrera voir que tu recharges autant de fois le script qu'il y a de lignes dans ton tableau?
Bien sûr que c'est faisable...
Marsh Posté le 24-05-2005 à 12:00:22
non mais j'avais déjà effectué ce genre de script. Avec une boucle de parcours de nom de table comme là et ca mettait pas mal de temps. Et il m'avait cassé les ... parce qeu le script etait trop long et qu'il fallait mieux faire traitement d'une table par une table avec une redirection javascript... MAis là comme c'est un script serveur ben jsuis obligé d'utilisier header...
Marsh Posté le 24-05-2005 à 12:02:53
faboubou a écrit : non mais j'avais déjà effectué ce genre de script. Avec une boucle de parcours de nom de table comme là et ca mettait pas mal de temps. Et il m'avait cassé les ... parce qeu le script etait trop long et qu'il fallait mieux faire traitement d'une table par une table avec une redirection javascript... MAis là comme c'est un script serveur ben jsuis obligé d'utilisier header... |
Ajouter des redirections ne peut qu'allonger le temps d'execution!
Tu peux très bien exécuter tes requêtes table par table tout en faisant tout dans le même script, c'est quoi le pb?
Marsh Posté le 24-05-2005 à 12:06:26
faboubou a écrit : Bonjour, |
Bon, hors discussion actuelle, je tiens à signaler que cette question revient au moins 5 fois par semaine, et qu'il serait peut-être temps de lire la doc :
Citation : Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file. |
Marsh Posté le 24-05-2005 à 12:07:26
ben en fait, ct le fait de pouvoir arreter ton script quand tu le voulais. Avec des redirections javascript tu pouvais arreter le script tandis qu'avec une boucle dans le script ben une fois lancé tu pouvais plus l'arreter... et pour peu que tu tombe sur une table à 31 millions d'enregistrement t'avait tout gagné et là tu avais els telephones qui sonnait avec les clients ou bout du fil disant que leur appli marchait plus forcement mysql etait surchargé
Marsh Posté le 24-05-2005 à 12:09:28
faboubou a écrit : ben en fait, ct le fait de pouvoir arreter ton script quand tu le voulais. Avec des redirections javascript tu pouvais arreter le script tandis qu'avec une boucle dans le script ben une fois lancé tu pouvais plus l'arreter... et pour peu que tu tombe sur une table à 31 millions d'enregistrement t'avait tout gagné et là tu avais els telephones qui sonnait avec les clients ou bout du fil disant que leur appli marchait plus forcement mysql etait surchargé |
Mais est-ce une bonne idée de pouvoir lancer des scripts aussi lourdingues en même temps que les gens travaillent sur la base? Vous avez pas moyen de faire ça autrement?
Marsh Posté le 24-05-2005 à 12:13:59
ben en fait ce sont des script de dump pour alleger les tables mais sur certains script on a une interface pour que l'admin puisse choisir ses tables a sauver...
Donc à part si l'admin reste la nuit pour lancer le script ben y'a pas de solutions. Quoique meme pas puisque on a des clients de partout dans le monde donc les acces à la base sont permanents... Y'a juste ce moyen qui a ete trouvé pour pouvoir ameliorer l'acces à la base.
Marsh Posté le 24-05-2005 à 12:18:07
...et l'interface pourrait pas proposer à l'admin de choisir l'heure à laquelle il veut l'exécuter? Doit bien y avoir des moments un peu plus creux...
Marsh Posté le 24-05-2005 à 13:05:57
Ben justement en fait je fais un script pour pouvoir automatiser le bordel. Mais je vais quand meme demander à mon boss l'histoire des redirections...
Marsh Posté le 24-05-2005 à 13:57:07
Pour information il existe un nombre maximum de fois qu'un serveur peut envoyer une redirection au client.
Je sais plus combien c'est, mais au bout d'un moment certains browser vont arreter de suivre les redirections et afficher un "maximum number of redirections exceded".
Sinon pour faire ce que tu veux il existe d'autre techniques.
Si tes requetes ne doivent pas forcement etre faite a la suite les unes des autres, mais peuvent etre faites en paralelle, alors tu pourrais utiliser la techniques des "images" qui renvoient vers ton script php.
Marsh Posté le 24-05-2005 à 11:31:10
Bonjour,
Voilà je souhaiterai faire une redirection en PHP et non en javascript vu que c'est un script serveur, sur la meme page. Alors vous allez me dire, qu'il faut utiliser header("location: ..." ) mais en fait j'ai une erreur de type:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/dump_table.php:16) in /var/www/html/dump_table.php on line 17
ma ligne contenant le header est celle ci:
header("Location: ./dump_table.php" );
Merci pour votre aide