Je traite un gros fichier de données JSON (25 Mo) en PHP.
Maintenant, je peux récupérer le fichier et vérifier la longueur de sa chaîne, même si je ne peux pas echo
afficher la chaîne, j'obtiens 24479798.
à echo strlen()
之后,脚本的其余部分崩溃了,我没有得到进一步的输出,包括 echo "Made it to the Bottom";
Pourquoi ne puis-je pas amener json_decode
au travail ? S'agit-il d'un problème de mémoire de script ou d'un problème d'encodage de caractères dans les données JSON ? Je suis coincé.
<?php error_reporting(E_ALL); ini_set('error_reporting', E_ALL); if($result = file_get_contents("test.json")){ echo "GOT IT"; }else{ echo "NO"; } // This works echo "Got to here"; // This works echo strlen($result); // I get "24479798", which is the file string length var_dump($diffbotResult); // Outputs all the JSON data, so I know I have it and it's proper JSON data $result = json_decode($result, true); echo json_last_error_msg(); // No output print_r($result); // No output echo "Made it to the bottom"; // Does not echo out anything ?>
Étant donné que vous essayez d'importer un fichier volumineux, le script prend plus de temps à s'exécuter que ce dont le navigateur/serveur a besoin et expirera avant de se terminer. Des scripts comme celui-ci doivent être exécutés à partir de la ligne de commande ou via cron pour éliminer les délais d'attente. Vous pouvez également augmenter la mémoire en ajoutant
ini_set('memory_limit', '512M');
(ou une valeur plus élevée si nécessaire) au début du script pour vous assurer qu'il dispose de suffisamment de mémoire pour charger et traiter le fichier json.