Page 1 of 1

Script Looping Problem

Posted: Wed Apr 14, 2010 8:13 pm
by joe592
I am trying to get a script to loop through all files in a directory, load each html file, loop through all img tags in the document and get check a server response header.

The script wont loop through all the files properly. It appears to loop through the img elements correctly and checks the responses.

I am at a loss why it wont loop through all the files. If I comment out the html img tag loop and out put the file loop only, it will display the whole directory.

Any ideas why the loop might not work?

Re: Script Looping Problem

Posted: Wed Apr 14, 2010 8:28 pm
by requinix
Dunno.

How about posting some code?

Re: Script Looping Problem

Posted: Thu Apr 15, 2010 1:11 am
by joe592
Here is the code I'm trying to use.

Code: Select all

$htmlDoc = new DomDocument();
$handle = opendir('.'); 
    while (false !== ($file = readdir($handle))) {
		$extension = strtolower(substr(strchr($file, '.'), 1));		
		if($extension == 'html'){
			echo $file . '<br>';				
			$htmlDoc->loadHTMLFile($file);		
			$element = $htmlDoc->getElementsByTagName('img');			
			foreach ($element AS $elements){			
			$array = get_headers('http://www.thermo-kinetics.com/' . $elements->getAttribute('src'));			
			if($array[0]=="HTTP/1.1 404 Not Found") {			
			echo 'http://www.thermo-kinetics.com/' . $elements->getAttribute('src') . '-->' .  '<span style="color:red">' . $array[0] . '</span><br>';			
			ob_flush();			
			flush();			
			} else if($array[0]=="HTTP/1.1 200 OK")	{			
			echo 'http://www.thermo-kinetics.com/' . $elements->getAttribute('src') . '-->' .  '<span style="color:green">' . $array[0] . '</span>br>';						
			ob_flush();			
			flush();	
			} else {			
			echo 'http://www.thermo-kinetics.com/' . $elements->getAttribute('src') . '-->' .  '<span style="color:orange">' . $array[0] . '</span><br>';			
			ob_flush();			
			flush();
			}			
			}
		}         
	}
    closedir($handle);

Re: Script Looping Problem

Posted: Thu Apr 15, 2010 8:45 am
by requinix
Looks fine to me. What does "wont loop through all the files properly" mean?

Re: Script Looping Problem

Posted: Thu Apr 15, 2010 4:14 pm
by joe592
What I mean by that is that the directory contains 25 html files, but the loop stops at the 9th file in the directory. When I was developing this script I wrote it in 2 parts.

1. To open the parent directory, check the extension and return only the html files.

2. To load a html file and return all img tags, then to get the response header from each img tag on the page by retrieving the src attribute of each tag and sending a request. I would then check each header for the response and if passed output "ok" per request.

When I wrote and tested each individual part it appeared to work correctly, but when I integrate the code into 1 part the file directory stops at the 9th html page. The code looks totally fine to me, but I must be doing something wrong because it wont retrieve all the html files. I am stumped.

Re: Script Looping Problem

Posted: Thu Apr 15, 2010 4:34 pm
by joe592
After further reviewing my code, I thought that the problem must lie elsewhere. I decided to check the config file for apache and php and discovered the problem. The problem was in the php config file. There is a line in there that specifies the maximum allowable time in seconds for a script to execute. It was set by default to 30 seconds, which was not enough time for the script to execute. After changing the time to a higher value so that the script has time to fully execute, it worked perfect.

Thanks for your help. **SOLVED**