J'essaie d'ajouter certaines variables à quelques fichiers qui ont déjà du contenu. J'utilise file_get_contents pour copier le contenu d'un fichier particulier, puis utiliser file_put_contents pour coller des valeurs de variables avec le contenu existant dans ce fichier.Comment effacer la mémoire après file_get_contents s'exécute en php
Le problème est que, sur la première instance, il fonctionne correctement, mais pour le second fichier, il colle tout ce qui a été stocké dans la mémoire. Il met tout le contenu du premier fichier avec le contenu du deuxième fichier.
Y at-il un moyen de vider la mémoire avant l'exécution de la file_get_contents suivante? Ou mon concept est faux ici.
Voici mon code ...
<?php
if ($_POST["submit"]) {
$ip = $_POST['ip'];
$subnet = $_POST['subnet'];
$gateway = $_POST['gateway'];
$hostname = $_POST['hostname'];
$domain = $_POST['domain'];
$netbios = $_POST['netbios'];
$password = $_POST['password'];
$ipfile = 'one.txt';
$file = fopen($ipfile, "r");
$ipfileContents = fread($file, filesize($ipfile));
$ipcontent = "ip='$ip'\n";
$ipcontent .= "netmask='$subnet'\n";
$ipcontent .= "gw='$gateway'\n";
$conten = $ipcontent . $ipfileContents;
$file = fopen($ipfile, "w");
fwrite($file, $ipfileContents);
fclose($file);
$ipsh = shell_exec('sh path/to/CHANGE_IP.sh');
$hostfile = 'two.txt';
$fileh = fopen($hostfile, "r");
$hostfileContents = fread($fileh, filesize($hostfile));
$hostcontent = "ip='$ip'\n";
$hostcontent .= "m_name='$hostname'\n";
$hostcontent .= "fqdn='$domain'\n";
$conten = $hostcontent . $hostfileContents;
$fileh = fopen($hostfile, "w");
fwrite($fileh, $hostfileContents);
fclose($fileh);
$hostsh = shell_exec('sh path/to/MODIFY_HOSTS.sh');
}
?>
J'ai essayé unset, mais n'a pas fonctionné
$ipfilecontents->__destruct();
unset($ipfilecontents);
MISE À JOUR:
file_get_contents
& file_put_contents
a quelques problèmes de concurrence . J'ai donc dû changer ma méthode pour fopen/fwrite/fclose
et cela a fonctionné parfaitement. Merci pour votre aide Jacinto.
généralement en utilisant 'unset' –
oui j'ai essayé d'utiliser ipfilecontents $ -> __ destruct(); unset ($ ipfilecontents); mais n'a pas fonctionné @MarkBaker – PeeJay
Vous ne devriez pas avoir à vous en préoccuper. Il y a quelque chose d'autre qui se passe, mais je ne l'attrape pas ... –