web-dev-qa-db-fra.com

Comment créer un nouveau fichier texte avec un nouveau nom à partir d'un script php chaque fois qu'il est exécuté

J'utilise un script PHP qui sert en fait à envoyer des SMS depuis le terminal à l'aide d'un service SMS en ligne 160by2

Cela ouvre le terminal, demande le numéro puis le sms et il est envoyé ...

Maintenant, je veux que le texte de ce sms soit copié dans un nouveau fichier à chaque fois.

par exemple, comme text1.txt puis text2.txt, il augmente chaque fois.

Si ce n'est pas possible à partir d'un script php, alors je peux rédiger un script shell qui exécute d'abord le script php, puis crée le nouveau fichier avec une commande et copie le texte du sms dans ce fichier.

Je veux connaître cette commande (je suppose que le traitement en pipeline est également utilisé) et aussi, comment rendre le nom du fichier différent à chaque fois?

Je ne connais pas les scripts Shell.

mais dans un langage de programmation normal, comme c/c ++/Java, il s’agirait d’une boucle dans laquelle une variable est incrémentée à chaque fois puis transmise en tant que paramètre au nom..est-ce que cela est possible dans les scripts Shell?

1
Nirmik

Votre script doit être modifié pour faire deux choses supplémentaires:

  1. Générez un nom de fichier unique pour le message texte (basé sur la date, l'heure, etc.)
  2. Écrivez le numéro $phno et le message $msg dans ce fichier.

Nous pouvons faire le premier en utilisant la fonction PHP date, et le dernier en utilisant la fonction file_put_contents.

Il suffit d’insérer ces deux lignes de code après la saisie du numéro de téléphone et du message:

 $ textfilename = "text" .date ("Ymd His"). ". txt"; 
 fichier_put_contents ($ textfilename, $ phno. "\ n". $ msg. "\ n" ); 
  • Exemple de sortie, dans le fichier text 2012-08-21 195239.txt:

    1800LOLCATS 
     ICANHAZCHEEZBURGER? 
    
1
ish

voici un script php qui écrit un fichier nommé en utilisant l'horodatage Unix:

#!/usr/bin/env php
<?php
file_put_contents("file" . ((int) microtime(true)) . ".txt", file_get_contents("/proc/cpuinfo"));
?>

si vous voulez remplir le fichier à partir de stdin, changez/proc/cpuinfo en php: // stdin

voici un script shell qui fait la même chose que le script php original

#!/bin/sh
cat /proc/cpuinfo | tee "file`date +%s`.txt" > /dev/null

vous pouvez chmod + x ces deux et les exécuter

2
Janus Troelsen