You can fix timeout by setting set_time_limit(0) (if safe mode is off).
I usually set this to something big (24 * 3600 = 1 day), not unlimited because this is software and may/will contain errors
Progress bar can be accomplished with AJAX I've seen some solutions.
There are rare situations that languages will restrict you to do something.
Some languages are better than others because they have different goals.
For example: if you try to generate a page using Delphi and PHP. For web pages PHP is better, but on the other side if you try to create quick and nice Windows application Delphi will do the job.
You decide what to do.