je suppose que ton code sur ledit serveur distant y arrive?phpMyAdmin depuis un serveur distant y arrive, il y plus qu'a lire le code ...
je suppose que ton code sur ledit serveur distant y arrive?phpMyAdmin depuis un serveur distant y arrive, il y plus qu'a lire le code ...
PHP fait nativement la validation d'adresse électronique .
Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.
Utilisez le bouton résolu!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 $con = mysqli_connect("localhost", "root", "passwd", "Spooler"); ini_set("memory_limit", "128M"); $sql = "SELECT * FROM job_images LIMIT 50000"; $res = mysqli_query($con, $sql); echo round(memory_get_peak_usage()/ (1024 ^ 2), 2) . " Mo\n"; while ($tab = mysqli_fetch_object($res)) { //MYSQL_NUM //echo implode("`|", $tab) . "\n<br />"; //echo round(memory_get_usage()/(1024*1024),2)." Mo<br />"; //$GLOBALS['_DEBUG']->save($i); //unset($tab); } echo round(memory_get_peak_usage()/ (1024 ^ 2), 2) . " Mo\n"; mysqli_close($con);
résultat :
avec limit = 50000
3737.72 Mo
22453.69 Mo
avec limit = 100000
7246.5 Mo
44675.91 Mo
avec limit = 200000
14264.04 Mo
89120.36 Mo
etc...
Si tu limites la sélection avec des fields spécifiques au lieu d'un "select *" ?
Un message utile vous a aidé ? N'oubliez pas le
www.simplifions.fr - Simplifier vos comptes entre amis !
le but étant de faire un export :p
Tu peux tester quand même sur quelques champs ? (c'est pour cibler le problème, php a peut-être du mal en interne avec le "*").
Un message utile vous a aidé ? N'oubliez pas le
www.simplifions.fr - Simplifier vos comptes entre amis !
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE `job_images` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created` datetime NOT NULL, `lastupdated` datetime NOT NULL, `version` int(11) NOT NULL, `meta` varchar(255) DEFAULT NULL, `quantity` int(11) NOT NULL, `image_id` int(11) NOT NULL, `job_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `FK8F12A53A8B91C647` (`image_id`), KEY `FK8F12A53A9EDDCA47` (`job_id`) )
la table SQL
j'ai juste fait :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT id FROM job_images
le problème reste entier, PS quel que soit la table où les données le résultat est le même.
n'hésitez pas à faire le test chez vous avec n'importe quelle table qui à un peu de données =)
PS : ne croyez pas que c'est simple :p, toutes les questions que j'ai pu poser dans le forum PHP n'ont jamais eu de réponse où je me suis répondu à moi-même.
Bon ben j'ai testé chez moi (faut faire 1024*1024 parce que le carré il y arrive pas) :
Avec environ 60000 lignes, résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $sql = "SELECT * FROM job_images"; $res = mysqli_query($con, $sql); echo round(memory_get_usage()/(1024*1024),2)." Mo<br />"; while ($tab = mysqli_fetch_object($res)) { //MYSQL_NUM } echo round(memory_get_usage()/(1024*1024),2)." Mo<br />"; mysqli_close($con);
Avant : 2.11 Mo
Après : 16.23 Mo
Ce qui ma foi m'a l'air d'être tout à fait cohérent...
Un message utile vous a aidé ? N'oubliez pas le
www.simplifions.fr - Simplifier vos comptes entre amis !
Bonsoir,
j'espère que les infos données ne sont pas les vrai sinon n'importe qui peut maintenant accéder aux données de ton serveur !!! (J'ai mis des étoiles au cas où la quote ne serais pas mise à jour quand tu enlèvera ces infos de ton post originel).
Ensuite pourquoi ne pas fragmenter ton export en petit bout. Si dans ta BDD tu a 50 000 enregistrement, tu découpe l'export en pack de 5 000 enregistrements (ou plus suivant la place en RAM de dispo). Il suffit de fait un COUNT(*) avant de commencer pour savoir le nombre d'enregistrement et faire en fonction du nombre.
EDIT : L'opérateur ^ ne correspond pas à une puissance mais à un XOR
une réponse vous a permis d'avancer ?
La bibliothèque mysqlnd disponible depuis PHP 5.3, utilise la gestion de mémoire de PHP.
Et effectivement chaque "fetch" est stocké en mémoire par mysqlnd et donc la mémoire comptabilisée par PHP augmente.
C'est certes mal fichu au final mais c'est comme ça.
Par parcourir un grand jeu de résultat on peut utiliser mysqli_use_result :
http://www.php.net/manual/fr/mysqli.use-result.php
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
Exia93
=> pour les param de connexion rien a faire (j'ai quand même changer le passwd), une vm monté à la volé qui est déjà plus de ce jour.
effectivement pour le ^ :p
Merci Sabotage pour les infos .
Spartacusply, fait un test avec 120000 lignes tu vas voir que ça double.
le but est de traité des millions/milliards de lignes ...
Avez tester de découper vos 120 000 lignes en petit groupe (10 000 lignes par exemple) ?
Sinon il faut utiliser des outil tels que mysqldump et envoyer le fichier par php.
une réponse vous a permis d'avancer ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager