0
votes

Comment arrêter .Text de devenir trop gros php

Bonjour,

Je fais mon premier PHP à l'aide de sites Web et j'ai des choses que j'écris à un log.txt. Chaque fois que quelqu'un visite mon site Web quelque chose est écrit comme ceci: xxx

maintenant je voudrais savoir, comment définir une taille de fichier max pour mon log.txt pour l'arrêter de recevoir trop grand. Par exemple; Il supprimera automatiquement le contenu le plus ancien "bloc" de disons 6 lignes longs et remplacez-le par le nouveau après le dépassement du fichier (par exemple) 500 lignes.

Je n'ai pas pu trouver ce problème en ligne, alors je suis très curieux de savoir comment je ferais cela.

Si vous avez des questions s'il vous plaît laissez-moi savoir et j'espère que vous pourrez m'aider avec ce problème!


5 commentaires

Écrivez à la base de données à la place.


Si vous utilisez un serveur Web, cela et beaucoup plus d'informations peuvent être visualisées dans les journaux de serveurs Web.


J'hôte mon site Web sur 000webhost. Mais je pose cela parce qu'un de mes amis envoie environ 40 000 bots à mon site Web qui a provoqué le log.txt de plus de 130 000 lignes.


On dirait que vous réinventez la rotation du journal. :-) Vous avez quelques options: écrivez-le vous-même ou Google un peu sur la rotation de la logique


Hmh bien. Je ne veux pas utiliser Composer, il s'agit simplement d'une seule application utilisateur et du site Web n'obtiendra aucun visiteur.


4 Réponses :


1
votes

Vous pouvez nommer le fichier à la date de nom de fichier Donc, fondamentalement pour chaque jour, vous aurez un autre fichier

$dateTime = date('Y/m/d G:i:s');
//The file will have the name log_2019-10-09.txt
$fh = fopen('log_'.date('Y-m-d').'.txt', 'a');
fwrite($fh, 'Date/Time: '."".$dateTime ."\n\n");
fclose($fh);


1 commentaires

Ce n'est pas vraiment ce que je cherche, mais merci, peu importe!



1
votes

Je suggère d'utiliser "Fichiers journaux de rotation" pour cela. Recherche sur Google à ce sujet. Vous obtiendrez des solutions simples pour cela.

Par exemple Comment configurer le logrotate avec les journaux PHP


0 commentaires

1
votes

Voici un exemple Comment obtenir les lignes comptez à partir de fichier https://www.w3resource.com/php-exercises/php-basic-exercise-16.php

ou vous pouvez essayer d'obtenir la taille du fichier:

si (fichiers ("log.txt")> = 5000) {écho "fichier à est grand"; }

ou xxx


0 commentaires

1
votes

Veuillez essayer ce code. J'ai testé ça ça marche bien. J'utilise \ r \ n code> pour une pause de ligne afin que votre fichier texte soit plus lisible.

<?php

$block = 2; //block consist of 5 lines
$remove_blocks = 1; //remove the number of blocks
$remove = $block * $remove_blocks; //totle line to remove

$line_limit = 5;
$content = file_get_contents("log.txt");
$array = explode("\r\n", $content);
$array = array_slice($array, -1);
$count = count($array);
if ($count >= $line_limit) {

    //Remove first few lines
    $array = array_slice($array, $remove);
    $new_data = implode("\r\n", $array);

    $fh = fopen('log.txt', 'w');
    fwrite($fh, $new_data . "\r\n");
    fclose($fh);

    $dateTime = date('Y/m/d G:i:s');
    $fh = fopen('log.txt', 'a');
    fwrite($fh, 'Date / Time: ' . "" . $dateTime . "\r\n");
    fclose($fh);

} else {

    $dateTime = date('Y/m/d G:i:s');
    $fh = fopen('log.txt', 'a');
    fwrite($fh, 'Date / Time: ' . "" . $dateTime . "\r\n");
    fclose($fh);

}

?>


6 commentaires

Comment puis-je définir une quantité maximale de lignes avant qu'elle ne supprime? Je pense que c'est $ line_limit = 20; mais c'est à la ligne 120 maintenant et il n'a rien supprimé


si ($ comte> = $ line_limit) { Cette ligne vérifie la limite, puis $ $ = Array = Array_slice ($ Array, $ Supprimer) Cette ligne est effectivement supprime les lignes de déployer. Je pense que vous utilisiez auparavant \ n \ n c'est pourquoi il ne se comporte pas correctement, remplacez-le avec \ r \ n


Je pense que ce n'est pas nécessaire, que jamais vous voulez écrire dans le fichier, vous venez de créer une variable puis concaténate toute la ligne avec cette variable pour créer une seule chaîne, puis écrivez cette chaîne dans le fichier et à la fin de la chaîne concaténate de la ligne. rompre de sorte que la prochaine fois que PHP puisse vérifier où se trouvait la rupture de la ligne.


Ok oui, je suis un peu lent mais cela fonctionne effectivement. Maintenant, que si je veux changer les lignes max? Je l'ai changé à 200 mais cela ne supprime pas quand il a plus de 200 lignes. Désolé, j'ai oublié de changer la quantité de blocs qu'il a supprimé. Merci beaucoup pour votre aide, je l'apprécie vraiment!


$ line = "ligne 1 \ r \ n"; $ ligne. = "Ligne 2 \ r \ n"; $ ligne. = "Ligne 3 \ r \ n"; Ici, je crée une chaîne qui a 3 lignes FHRITE ($ FH, $ Line. "\ r \ n") ;.


Laissez-nous Continuez cette discussion en chat .