Comment puis-je le faire quand un utilisateur clique sur un lien sur ma page web, il écrit dans un fichier .txt nommé "Count.txt", qui contient seulement un nombre et ajoute 1 à ce nombre? Je vous remercie.PHP - Ouvrir le fichier TXT, ajouter +1 au contenu lorsque le lien est cliqué
Répondre
Si vous renoncez à toute validité vous vérification pourrait le faire avec quelque chose d'aussi simple que:
file_put_contents($theCounterFile, file_get_contents($theCounterFile)+1);
Addition:
On parle de la concurrence dans ce fil et il convient de noter qu'il est une bonne idée d'utiliser une base de données et des transactions pour faire face à la concurrence, je recommande fortement de ne pas écrire un tas de code de plomberie pour le faire dans un fichier.
Si vous avez déjà eu, ou pensez que vous pourriez jamais avoir deux demandes de la ressource dans la même seconde que vous devriez regarder dans PDO avec mysql, ou AOP avec SQLite au lieu d'un fichier, les opérations d'utilisation (et InnoDB ou mieux si vous allez pour mysql). Mais vraiment, même si vous obtenez deux requêtes dans la même microseconde (très peu probable), les chances de verrouiller le fichier sont minces car il ne sera pas maintenu ouvert et les deux demandes ne seront probablement pas traitées assez parallèlement pour verrouiller de toute façon . Soyons réalistes: combien de coups sur la même ressource vous obtenez en moyenne dans la même minute ...
Cela va échouer lorsque plusieurs utilisateurs se connectent en même temps, vous avez besoin de verrous. Voir la réponse de Wim Vandersmissen. – johannes
oui il échouera, si vous avez besoin de quelque chose de viable pour la concurrence utiliser une base de données, pas un fichier texte. – Kris
Vous avez oublié le nom de fichier pour 'file_put_contents'. – Gumbo
En général, cela est assez facile:
$count = (int)file_get_contents('/path/to/Count.txt');
file_put_contents('/path/to/Count.txt', $count++, LOCK_EX);
Mais vous allez rencontrer des problèmes de concurrence en utilisant cette code. Une façon de générer une serrure à l'abri de toute condition de course est:
$countFile = '/path/to/Count.txt';
$countTemp = tempnam(dirname($countFile), basename($countFile));
$countLock = $countFile . '.lock';
$f_lock = fopen($countLock, 'w');
if(flock($f_lock, LOCK_EX)) {
$currentCount = (int)file_get_contents($countFile);
$f_temp = fopen($countTemp, 'w');
if(flock($f_temp, LOCK_EX)) {
fwrite($f_temp, $currentCount++);
flock($f_temp, LOCK_UN);
fclose($f_temp);
if(!rename($countTemp, $countFile)) {
unlink($countTemp);
}
}
flock($f_lock, LOCK_UN);
fclose($f_lock);
}
Si vous décidez de faire quoi que ce soit plus avancé, comme dire deux chiffres, vous voudrez peut-être envisager d'utiliser SQLite. Il s'agit d'une procédure aussi rapide et simple que l'ouverture et la fermeture d'un fichier, mais elle est beaucoup plus flexible.
SQLite est évidemment une bien meilleure idée que d'utiliser un fichier texte. – Kris
Ouvrez le fichier, verrouillez le fichier (TRÈS important), lisez le numéro qui s'y trouve, ajoutez 1 au numéro, réécrivez le numéro dans le fichier, relâchez le verrou et fermez le fichier.
ie. quelque chose comme:
$fp = fopen("count.txt", "r+");
if (flock($fp, LOCK_EX)) { // do an exclusive lock
$num = fread($fp, 10);
$num++;
fseek($fp, 0);
fwrite($fp, $num);
flock($fp, LOCK_UN); // release the lock
} else {
// handle error
}
fclose($fp);
devrait fonctionner (non testé).
- 1. PHP trier le fichier texte (.txt) numériquement
- 2. Personnaliser le lien pour ajouter du contenu
- 3. PHP Ouvrir le lien dans iframe
- 4. Comment lire le contenu d'un fichier txt dans un formulaire?
- 5. Force Refresh lorsque le lien avec le tag Hash est cliqué
- 6. UserControl dans le fichier txt
- 7. PHP - Liste déroulante pour afficher le contenu .txt
- 8. images PHP ajouter txt
- 9. ouvrir une URL dans Safari lorsque le bouton est cliqué iPhone
- 10. Onglets jQueryUI ... ajouter du contenu à l'onglet inactif, le contenu reste caché lorsque l'onglet est cliqué/activé
- 11. MVC ouvrir le fichier pdf
- 12. Y compris un fichier basé sur le lien cliqué
- 13. Comment ajouter une classe selon le contenu du lien?
- 14. ouvrir le fichier temporaire en Java
- 15. Nombre d'écriture/lecture dans le fichier txt
- 16. le type se dégrade lorsque le bouton est cliqué
- 17. Télécharger Applescript & ouvrir le lien
- 18. Surligner le texte lorsque cliqué
- 19. Comment écrire le contenu d'une JTable dans un fichier txt
- 20. Excel Enregistrement au fichier TXT
- 21. Un lien Ajouter un espace dans le contenu
- 22. ouvrir le lien dans iframe
- 23. txt fichier lire/remplacer/ajouter. Est-ce faisable? (Visual C#)
- 24. Ouvrir le fichier .bat dans php
- 25. lien vers le fichier php externe où le lien contient également javascript qui est exécuté sur le site Web lié
- 26. Comment forcer LostFocus lorsque le bouton est cliqué
- 27. Comment un événement déclencheur déclenche-t-il lorsque le lien est au-dessus d'un autre lien?
- 28. Enregistrer le fichier avec le nouveau nom de fichier: ajouter au nom de fichier existant
- 29. jQuery - en cliquant sur le lien cliqué
- 30. Obtenir le contenu du fichier php
Etes-vous sûr que c'est ce que vous voulez? On dirait que vous voulez juste connecter vos visiteurs. Il y a beaucoup d'autres choses qui peuvent mieux convenir à vos objectifs, comme AwStats ou Google Analytics. – Zarel
Ce que j'essaie de faire est de garder la trace du nombre de fois qu'un de mes programmes est téléchargé. Je n'ai jamais utilisé MySQL ou quoi que ce soit et j'ai des connaissances de base en PHP. – user