Gestion d'un fichier txt

Petit nouveau ! | 1 Messages

05 févr. 2015, 11:02

Bonjour, pour mon stage on m'a demander de corriger un script php. J'ai travailler pas mal de temps sur l'erreur. Après utilisation de différente technique j'ai découvert le soucis mais je n'arrive pas à le corriger. Le problème est le suivant :
Je lis tout le fichier text de mail et tout les mails sont placer dans un array, puis je dois supprimer les doublons et ensuite suivant les adresses mail entrer par l'utilisateur le script dois supprimer l'adresse mail désirer. Le soucis c'est que passer une certaine quantité de mail, il ne supprime plus rien ...
		$Data = file_get_contents('./documents/mail.txt'); 
		$MailArea = $_POST['delink'];
		$Data_array = explode("\r\n", $Data);
		$TabFicUnique = array_values(array_unique($Data_array));
		$TabArea = explode("\r\n", $MailArea);
		$LengthFic = count($TabFicUnique);
		$LengthArea = count($TabArea);
		$MailTraite = '';
		$TabTemp = $TabFicUnique;
		for($i = 0; $i < $LengthFic; ++$i)
		{
			for($j = 0; $j < $LengthArea; ++$j)
			{
				if ($TabFicUnique[$i] == $TabArea[$j]) unset($TabTemp[$i]);
				
			}
		}
		$TabTemp = array_values($TabTemp);
		$LengthTemp = count($TabTemp);
		for($j = 0; $j < $LengthTemp; $j++) $MailTraite .= $TabTemp[$j] . "\r\n";
		
		$NomFich = "./documents/mail-maj.txt";
		if (!$fp = fopen($NomFich,"w+")) 
		{
			echo 'Erreur dans la création du document texte !';
			exit;
		}
		else echo 'Documents texte mail-maj.txt à été crée correctement <br />';
		
		fwrite($fp, $MailTraite);
		fclose ($fp);
SI on sait m'aider svp, ca serais bien sympas :) .

ViPHP
ViPHP | 1996 Messages

06 févr. 2015, 11:37

Un problème de mémoire ? Combien as-tu de courriels à traiter ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Xahos01
Invité n'ayant pas de compte PHPfrance

06 févr. 2015, 12:04

Beaucoup, fichier volumineux de 35mo

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2015, 14:01

Tu peux essayer de libérer de la mémoire, tu as le contenu du fichier que tu n'utilises plus dans $Data.
unset($Data);
Mais sinon 35mo c'est petit, je pense donc que la mémoire attribué à PHP est vraiment très basse...
Tu peux t'orienter vers la modification de la mémoire attribuée aux scripts PHP dans le php.ini si cette solution est acceptable.