Lewis
Lewis

Reputation: 244

PHP Script Crashes and Max Execution Time

I currently have a website that has twice been suspended by my hosting provider for "overusing system resources". In each case, there were 300 - 400 crashed copies of one of my PHP scripts left running on the server.

The scripts themselves pull and image from a web camera at home and copy it to the server. They make use of file locks to ensure only one can write at a time. The scripts are called every 3 seconds by any client viewing the page.

Initially I was confused, as I had understood that a PHP script either completes (returning the result), or crashes (returning the internal server error page). I am, however, informed that "defunct scripts" are a very common occurrence.

Would anyone be able to educate me? I have Googled this to death but I cannot see how a script can end up in a crashed state. Would it not time out when it reaches the max execution time?

My hosting provider is using PHP set up as CGI on a Linux platform. I believe that I have actually identified the problem with my script in that I did not realise that flock was a blocking function (and I am not using the LOCK_NB mask). I am assuming that somehow hundreds of copies of my script end up blocked waiting for a resource to become available and this leads to a crash? Does this sound plausible? I am reluctant to re-enable the site for fear of it being suspended again.

Any insights greatly appreciated.

Upvotes: 1

Views: 656

Answers (2)

Ja͢ck
Ja͢ck

Reputation: 173522

Probably the approach I would recommend is to use tempnam() first and write the contents inside (which may take a while). Once done, you do the file locking, etc.

Not sure if this happens when a PUT request is being done; typically PHP will handle file uploads first before handing over the execution to your script.

Upvotes: 1

derki
derki

Reputation: 620

Script could crash on these two limitations

  • max_execution_time
  • memory_limit

while working with resources, unless you have no other errors in script / check for notice errors too

Upvotes: 0

Related Questions