jag har ett nyhetsbrev med väldigt många medlemmar (dryga tusen). Hade först det lagrat i en databas och loopade ut breven med funktionen mail(), vilket tar ohyggligt lång tid (script timeout). Fick rådet av administratören på webhotellet att göra på annat vis.
#!/bin/bash
ADRESSLISTA=$1
BREVET=$2
cat $ADRESSLISTA |
while read ADRESS ; do
RETURADRESS=`echo $ADRESS | sed 's/@/AT/'`.nyhetsbrev@mindomän.com
echo skickar till $ADRESS
( echo To: $ADRESS
cat $BREVET
echo Detta brev var skickat till $ADRESS
echo Om du inte vill ha fortsatta utskick så vänligen
echo kontakta minadress@mindomän.com. Tack. ) |
/usr/sbin/sendmail -f $RETURADRESS $ADRESS
done
Nu till frågan, kan jag göra en enkel admin i PHP som utför uppgiften i utskick.sh och tar emot "nyheten" från ett formulär istället, så att man slipper logga in på SSH var gång?
exec() exekverar din bash-kommando och resultatet hamnar i arrayen $output så att du kan behandla informationen. Behöver du inte behandla den, kan du lika gärna passthru() som skickar all information direkt tillbaka till klienten.
Testa följande då:
Kommentera bort raden med exec() i din PHP. Direkt efter att PHP-dokumetet exekverats klart, går du in i kommandoprompten och skriver ditt kommando manuellt: