J'ai un script PHP que vous pouvez télécharger des fichiers très volumineux avec (jusqu'à 500 Mo), et le contenu du fichier est stocké dans une base de données MySQL. Actuellement, je fais quelque chose comme ceci:Une meilleure façon de stocker de gros fichiers dans une base de données MySQL?
mysql_query("INSERT INTO table VALUES('')");
$uploadedfile = fopen($_FILES['file']['tmp_name'], 'rb');
while (!feof($uploadedfile)) {
$line = mysql_escape_string(fgets($uploadedfile, 4096));
mysql_query("UPDATE table SET file = CONCAT(file, '$line') WHERE something = something");
}
fclose($uploadedfile);
Cela fait bien sûr beaucoup de requêtes sql.
Je l'ai fait plutôt que quelque chose comme
$file = file_get_contents($_FILES['file']['tmp_name']);
mysql_query("INSERT INTO table VALUES('$file')");
parce que épuiserait cependant beaucoup de mémoire le fichier était, et il semblait préférable de faire plus de requêtes SQL que d'utiliser 500 Mo de mémoire.
Cependant, il doit y avoir un meilleur moyen. Dois-je aller de l'avant et le faire de manière file_get_contents ou y at-il un meilleur moyen que CONCAT, ou est-ce que je le fais maintenant le moindre de tous les maux?
Je trouve en même temps intéressant et frustrant que chaque fois qu'une question est posée sur StackOverflow, beaucoup plus est dit sur la façon dont quelqu'un _should_ faire quelque chose plutôt sur _how_ faire ce qu'ils demandent. Les répondeurs doivent présenter des alternatives, et s'ils sont rejetés, essayez de répondre à la question posée. Peu importe pourquoi je dois le faire de cette façon. Je suis venu à StackOverflow pour obtenir une réponse à une question mais surtout je reçois juste des commentaires sur comment je ne devrais pas le faire de cette façon. –
Si vous dites: «Je veux conduire ma voiture sur l'autoroute avec juste des jantes, pas de pneus. La réponse que la plupart des gens vous donneront est "Ne faites pas". Si vous demandez comment faire une bêtise avec du code, la plupart des dev qui connaissent leur truc répondront de la même manière. C'est une gentillesse, pas une insulte. – curtisdf