NYCPHP Meetup

[nycphp-talk] php for mailing list app?

Anirudh Zala arzala at gmail.com
Tue Jun 27 04:24:35 EDT 2006


Hi Robyn,

It seems that basically there is not such package that can satisfy all  
your needs. So either you may combine different different  
packages/software that can serve your purpose or design your own custom  
application.

Your custom application's logic can be divided into 4 steps (scripts)

1: mailScheduler.php
2: sendMail.php
3: checkBounceMail.php
4: mailLog.php

1st and 4th script are intended to run from browser, while 2nd and 3rd are  
 from CLI. Logic can be as mentioned below:

+> "mailScheduler.php" will determine how many mails are to be sent, to  
whom, what content will be etc. It can be, in fact, your regular script  
that can generate above information. Instead of sending those mails  
directly (which is your 1st problem domain), store them in database as it  
is. (i.e in various fields like mail_to, mail_from, mail_content,  
mail_status, date_send etc.) In short mailScheduler.php will insert mail  
related information into database with mail_status=Q (Q means queue).

+> As soon as insertion of data is finished, you can call script  
"sendMail.php" to run from CLI from above script using many methods like  
using functions, using Backtick operator etc. (about how to run PHP script  
in background from command line by executing that command from script  
running in browser). Read reply of "drydell at optonline.net". This script  
will simply read those inserted content from database, maybe do some other  
foo stuffs, and will start sending mail and then it will set value of  
field mail_status=S (S means sent). If you have 10 000 mails to be sent  
then it wont take more than 15 minutes to finish execution in normal case.

+> As soon as execution of above script is finished, either you can call  
3rd script "checkBounceMail.php" immediately from above running CLI script  
to check whether any mails are bounced or not by checking mails from that  
account or schedule that script in Cron to check bounced mail at every  
hour and parsing content of bounced mail and marking status of field  
mail_status=B (B means bounced)

+> 4th script is special script which will manually read content from  
database, at any stage during execution of any 1st, 2nd or 3rd script, and  
will list status of all mails whether Q or S or B according to value of  
filed mail_status (and other information if required). Since this is  
manual script it will need to be clicked in browser in order to display  
desired results. Alternatively if you want automatic results then you can  
make this script to be run from CLI and set it's execution time in Cron  
and it will then notify results via email etc.

By this way, I think within an hour everything will be scanned and report  
can be generated. There are also many other issues to be handled while  
sending mass mails like setting bounced mail address, how to read bounced  
mails etc. but since you have not asked, no need to reply at this moment.

Thanks

Anirudh Zala

On Mon, 26 Jun 2006 23:15:50 +0530, robyn overstreet <robynover at gmail.com>  
wrote:

> On 6/26/06, Donald J Organ IV <dorgan at optonline.net> wrote:
>> Well create a cron job that runs every x amount of minutes that looks
>> for messages that have say the Send field set to 1 in the database.
>
> Great! That makes sense.
>
> Still wondering how to let the user know the status of the process
> from the browser. Obviously, the browser PHP could check the database
> repeatedly to see if the send field is set to 0, but that might create
> a long wait also. Additionally, is it reasonable to query the database
> in a cron job every minute? Every 5 minutes? The client will probably
> only use the app weekly or monthly, but of course it needs to be ready
> at any time.
>
> TIA
> Robyn
>
>> robyn overstreet wrote:
>> > On 6/26/06, Donald J Organ IV <dorgan at optonline.net> wrote:
>> >
>> >> I believe that if you run the script that sends the emails from the
>> >> command line using say cron that the PHP has no max execution time.
>> >> This may help.
>> >>
>> >
>> > Thank you. That's helpful. It makes sense that if I run the script
>> > behind the scenes, not only will it not time out, but the user won't
>> > be affected by the 'long' time it takes to send mail. Since I'm
>> > writing a web application, though, I don't think cron will help -- I
>> > need to run the script (not in the browser) when the user hits "send
>> > to subscribers". Any suggestions on how to do this?
>> >
>> > Thanks
>> > Robyn
>> >
>> >
>> >
>> >> robyn overstreet wrote:
>> >>
>> >>> Hi all-
>> >>> I'm working on a mailing list (announcement only) for a client and  
>> I'm
>> >>> trying to decide if using PHP is the way to go. I'm more comfortable
>> >>> with PHP than with Perl, but it seems that Perl has better email
>> >>> handling modules available.
>> >>>
>> >>> When I've worked with PHP mail() before, my experience was that  
>> even a
>> >>> relatively small list of about 50 addresses took a while to loop
>> >>> through and send. I'm concerned that the server will time out for a
>> >>> larger list. I'm wondering if I need to make a socket connection.
>> >>>
>> >>> Can anyone point me in a good direction to research?
>> >>>
>> >>> Thanks in advance-
>> >>> Robyn
>> >>> _______________________________________________
>> >>> New York PHP Community Talk Mailing List
>> >>> http://lists.nyphp.org/mailman/listinfo/talk
>> >>> New York PHP Conference and Expo 2006
>> >>> http://www.nyphpcon.com
>> >>> Show Your Participation in New York PHP
>> >>> http://www.nyphp.org/show_participation.php
>> >>>
>> >>>
>> >>>
>> >>>
>> >> _______________________________________________
>> >> New York PHP Community Talk Mailing List
>> >> http://lists.nyphp.org/mailman/listinfo/talk
>> >> New York PHP Conference and Expo 2006
>> >> http://www.nyphpcon.com
>> >> Show Your Participation in New York PHP
>> >> http://www.nyphp.org/show_participation.php
>> >>
>> >>
>> > _______________________________________________
>> > New York PHP Community Talk Mailing List
>> > http://lists.nyphp.org/mailman/listinfo/talk
>> > New York PHP Conference and Expo 2006
>> > http://www.nyphpcon.com
>> > Show Your Participation in New York PHP
>> > http://www.nyphp.org/show_participation.php
>> >
>> >
>> >
>>
>> _______________________________________________
>> New York PHP Community Talk Mailing List
>> http://lists.nyphp.org/mailman/listinfo/talk
>> New York PHP Conference and Expo 2006
>> http://www.nyphpcon.com
>> Show Your Participation in New York PHP
>> http://www.nyphp.org/show_participation.php
>>
> _______________________________________________
> New York PHP Community Talk Mailing List
> http://lists.nyphp.org/mailman/listinfo/talk
> New York PHP Conference and Expo 2006
> http://www.nyphpcon.com
> Show Your Participation in New York PHP
> http://www.nyphp.org/show_participation.php



-- 
-----------------------------------------------
Anirudh Zala (Project Manager)
ASPL, http://www.aspl.in
Ph: +91 281 245 1894
arzala at gmail.com
-----------------------------------------------



More information about the talk mailing list