John,I'm a great believer in using the right program for the right job. I need some advice from people who use both PHP and Perl. I've long been a fan of PHP and we use it for all our development work. However, I seem to keep coming up with a bit of a problem when using PHP and I just wanted to see if I was right or if there's something I'm not doing right.
Basically, we are bringing emails in from a client that all contain large files - usually between 12mb and 15mb in size. This side of what we are doing cannot be changed unfortunately. When we use PHP to parse these files it often times out - I understand that we can flush data and we call set_time_limit() occassionally to reset the time counter, but PHP really seems to struggle. It just seems that every job I work on that needs to parse large files or do something like web crawling that we always come across these problems. A couple of people have said that we should look at Perl because it is better at this kind of thing and thats why I'd be interested in opinions about it from people who know - ie those who regularly code in both
Appreciate any comments or suggestions or even if you can point me to any sites that cover this as I looked and couldn't find any
I second Richard's opinion that there isn't any great reason to ditch PHP in favor of Perl if you're already comfortable with PHP and especially if you already have working code written in PHP. Are you running these PHP scripts from the command line or via a web server? In either case just do 'set_time_limit(0)' like Richard suggested and that will eliminate the script timeout problems.
It's not really fair to say that PHP isn't a good tool for the job because it is timing out. PHP's default setup includes a script timeout because it is typically used to serve up web pages in times measured in fractions of a second. So, for the vast majority of users something has generally gone horribly wrong if a script is running for upwards of 30 seconds. Your usage of the language is outside what the "typical" user does, so the default timeout settings are not appropriate for you. Perl does not have any script timeout built in by default so it's not going to have that problems. So, just because PHP's default settings don't match your needs that does not mean that it isn't an appropriate tool for the job.
The bigger factor to consider in your choice of language is the libraries available to help get the job done quickly without writing a ton of code yourself. In many cases Perl's CPAN library (http://cpan.org) has more mature options for doing things like parsing email so that might get you up and running faster than with PHP. That said, there are some things in the PEAR library that might help. Take a look at the Mail_Mime class (http://pear.php.net/package/Mail_Mime).
- Jamie
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php