banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Vấn đề 2 vòng lặp trong PHP  XML
  [Programming]   Vấn đề 2 vòng lặp trong PHP 24/02/2012 16:28:21 (+0700) | #1 | 255089
[Avatar]
vitcon01
Member

[Minus]    0    [Plus]
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
[Profile] [PM]
Em code PHP, sử dụng vòng lặp trong vòng lặp để xử lý, tuy nhiên vòng lặp 1 chỉ xử lý được 1 lần, nếu tới lần 2 thì sẽ bị "treo". Bị treo ở đây là trình duyệt nó cứ quy quy hoài. Anh chị nào có thể, mong giúp đỡ.
Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php


$url = $_GET['url'];

$ip_array =  array('xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx');

$port = 80 ;//Port

echo "URL:".$url."</br>";

if(ereg("\/\*$",$url))
{
	$url=str_replace("*","",$url);
	exec("export HOME=/tmp && lynx -dump ".$url." | sed -n '/ferences/,//p'| gawk -F. '$4 ~ /jpg/||/png/||/gif/ {print}' |gawk '{print $2}'",$line);

	echo "URL:".$url."</br>";

	for($j=0;$j<count($line); $j++)
	{
		$array = explode('/', $line[2]);
		$url1="";
		
		for($i=0;$i<count($array); $i++)
		{
  	      		if($i==0)
                		$url1 .= $array[$i].'//';
       	      		else if($i==2)
                		$url1 .=$array[$i].'/purge/';
              		else if($i!=1 && $i != count($array)-1)
                		$url1 .= $array[$i].'/';
              		else if($i == count($array)-1)
                	$url1 .= $array[$i];
		}
		for($k=0;$k<count($ip_array);$k++)
		{
                	$fp = fsockopen($ip_array[$k], $port, $errno, $errstr, 30);

               		$out = "";

                	$output="";

                	$out = "PURGE $url1 HTTP/1.0\r\n";

                	$out .= "Connection: Close\r\n\r\n";

                	fwrite($fp, $out);

                	$data="";

                	while (!feof($fp))

                	{

                        	$data.= fgets($fp,128);

                	}

                	if (eregi("200 OK",$data))
                	{
                        	echo "\n[". date("d-m-Y h:i:s")."] Clear ><  > thanh cong tren server ". $ip."</br>";
                        	

                       	echo "</br>result: $data </br>";
 	              	}

                	else
                	{
                        	echo "\n[". date("d-m-Y h:i:s")."] Clear not OK <  >  tren server ". $ip."</br>";
                        	
                	}
                	fwrite($file,$output);
                	fclose($fp);
		}
		fwrite($file,"\n");
		fclose($file);
	}

}
else
{
$array = explode('/', $url);


for($i=0;$i<count($array); $i++)
{

	if($i==0)
		$url1 .= $array[$i].'//';
	else if($i==2)
		$url1 .=$array[$i].'/purge/';
	else if($i!=1 && $i != count($array)-1)
		$url1 .= $array[$i].'/';
	else if($i == count($array)-1)
		$url1 .= $array[$i];
}


echo "URL:".$url1."></br>";

foreach($ip_array as $ip)
{
		$fp = fsockopen($ip, $port, $errno, $errstr, 30);

		$outs = "";

		$output="";

		$out = "PURGE $url1 HTTP/1.0\r\n";

		$out .= "Connection: Close\r\n\r\n";

		fwrite($fp, $out);

		$data="";

		while (!feof($fp)) 

		{

			$data.= fgets($fp,128);

		}


		if (eregi("200 OK",$data))
		{
			echo "\n[". date("d-m-Y h:i:s")."] Clear < > thanh cong tren server ". $ip."</br>";
			

		}
			
		else
		{
			echo "\n[". date("d-m-Y h:i:s")."] Clear not OK  tren server  ". $ip."</br>";
		
		}
		fwrite($file,$output);
		fclose($fp);
}
fwrite($file,"\n");
fclose($file);
}
?>

</body>
</html>
JK - JH
()()()
LTKT - LTT
[Up] [Print Copy]
  [Programming]   Vấn đề 2 vòng lặp trong PHP 24/02/2012 16:33:16 (+0700) | #2 | 255093
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
Trình duyệt mà cứ quay quay hoài thì là do trong mấy cái vòng lặp phía trên, có một cái không bao giờ đạt được điều kiện thoát, nói cách khác nó là vòng lặp vô tận smilie
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Programming]   Vấn đề 2 vòng lặp trong PHP 24/02/2012 16:40:56 (+0700) | #3 | 255097
[Avatar]
vitcon01
Member

[Minus]    0    [Plus]
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
[Profile] [PM]
-->em cũng nghĩ như vậy, tuy nhiên em xem log thì thấy nó thực hiện vòng lặp ngoài lần đầu tiên thì được nhưng đến lần thứ 2 là đứng im
JK - JH
()()()
LTKT - LTT
[Up] [Print Copy]
  [Programming]   Vấn đề 2 vòng lặp trong PHP 24/02/2012 17:08:08 (+0700) | #4 | 255099
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
Dĩ nhiên, nó không thoát được thì log đâu có ghi thêm gì smilie
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Programming]   Vấn đề 2 vòng lặp trong PHP 24/02/2012 18:35:04 (+0700) | #5 | 255118
[Avatar]
chiro8x
Member

[Minus]    0    [Plus]
Joined: 26/09/2010 00:38:37
Messages: 661
Location: /home/chiro8x
Offline
[Profile] [PM] [Yahoo!]
What's the $line ?.
Ai viết cái này mà nhiều lỗi quá. Cậu đừng set error_reportding = NULL.
while(1){}
[Up] [Print Copy]
  [Programming]   Vấn đề 2 vòng lặp trong PHP 24/02/2012 23:21:50 (+0700) | #6 | 255157
[Avatar]
thienhavodinh
Member

[Minus]    0    [Plus]
Joined: 13/03/2009 20:38:18
Messages: 20
Offline
[Profile] [PM]

vitcon01 wrote:
Em code PHP, sử dụng vòng lặp trong vòng lặp để xử lý, tuy nhiên vòng lặp 1 chỉ xử lý được 1 lần, nếu tới lần 2 thì sẽ bị "treo". Bị treo ở đây là trình duyệt nó cứ quy quy hoài. Anh chị nào có thể, mong giúp đỡ.
Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php


$url = $_GET['url'];

$ip_array =  array('xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx','xxx.xxx.xxx.xxx');

$port = 80 ;//Port

echo "URL:".$url."</br>";

if(ereg("\/\*$",$url))
{
	$url=str_replace("*","",$url);
	exec("export HOME=/tmp && lynx -dump ".$url." | sed -n '/ferences/,//p'| gawk -F. '$4 ~ /jpg/||/png/||/gif/ {print}' |gawk '{print $2}'",$line);

	echo "URL:".$url."</br>";

	for($j=0;$j<count($line); $j++)
	{
		$array = explode('/', $line[2]);
		$url1="";
		
		for($i=0;$i<count($array); $i++)
		{
  	      		if($i==0)
                		$url1 .= $array[$i].'//';
       	      		else if($i==2)
                		$url1 .=$array[$i].'/purge/';
              		else if($i!=1 && $i != count($array)-1)
                		$url1 .= $array[$i].'/';
              		else if($i == count($array)-1)
                	$url1 .= $array[$i];
		}
		for($k=0;$k<count($ip_array);$k++)
		{
                	$fp = fsockopen($ip_array[$k], $port, $errno, $errstr, 30);

               		$out = "";

                	$output="";

                	$out = "PURGE $url1 HTTP/1.0\r\n";

                	$out .= "Connection: Close\r\n\r\n";

                	fwrite($fp, $out);

                	$data="";

                	while (!feof($fp))

                	{

                        	$data.= fgets($fp,128);

                	}

                	if (eregi("200 OK",$data))
                	{
                        	echo "\n[". date("d-m-Y h:i:s")."] Clear ><  > thanh cong tren server ". $ip."</br>";
                        	

                       	echo "</br>result: $data </br>";
 	              	}

                	else
                	{
                        	echo "\n[". date("d-m-Y h:i:s")."] Clear not OK <  >  tren server ". $ip."</br>";
                        	
                	}
                	fwrite($file,$output);
                	fclose($fp);
		}
		fwrite($file,"\n");
		fclose($file);
	}

}
else
{
$array = explode('/', $url);


for($i=0;$i<count($array); $i++)
{

	if($i==0)
		$url1 .= $array[$i].'//';
	else if($i==2)
		$url1 .=$array[$i].'/purge/';
	else if($i!=1 && $i != count($array)-1)
		$url1 .= $array[$i].'/';
	else if($i == count($array)-1)
		$url1 .= $array[$i];
}


echo "URL:".$url1."></br>";

foreach($ip_array as $ip)
{
		$fp = fsockopen($ip, $port, $errno, $errstr, 30);

		$outs = "";

		$output="";

		$out = "PURGE $url1 HTTP/1.0\r\n";

		$out .= "Connection: Close\r\n\r\n";

		fwrite($fp, $out);

		$data="";

		while (!feof($fp)) 

		{

			$data.= fgets($fp,128);

		}


		if (eregi("200 OK",$data))
		{
			echo "\n[". date("d-m-Y h:i:s")."] Clear < > thanh cong tren server ". $ip."</br>";
			

		}
			
		else
		{
			echo "\n[". date("d-m-Y h:i:s")."] Clear not OK  tren server  ". $ip."</br>";
		
		}
		fwrite($file,$output);
		fclose($fp);
}
fwrite($file,"\n");
fclose($file);
}
?>

</body>
</html>
 


Có đóng $file mà không có mở àh?
[Up] [Print Copy]
  [Programming]   Vấn đề 2 vòng lặp trong PHP 25/02/2012 08:05:13 (+0700) | #7 | 255190
[Avatar]
vitcon01
Member

[Minus]    0    [Plus]
Joined: 29/04/2009 11:28:21
Messages: 306
Offline
[Profile] [PM]
Xin lỗi mọi người, code đã được em laọi bỏ những chỗ ko cần thiết
Có đóng $file mà không có mở àh? 

---> chỗ này đoạn trên có 1 đoạn code để tạo log, em đã loại bỏ.
What's the $line ?.  

->đây bạn
Code:
exec("export HOME=/tmp && lynx -dump ".$url." | sed -n '/ferences/,//p'| gawk -F. '$4 ~ /jpg/||/png/||/gif/ {print}' |gawk '{print $2}'",$line);

Em đã xác định nguyên nhân nhưng cũng ko thể giải thích được vì sao đó là chỗ này

for($j=0;$j<count($line); $j++)
{
$array = explode('/', $line[2]);
$url1="";

for($i=0;$i<count($array); $i++)
{
if($i==0)
$url1 .= $array[$i].'//';
else if($i==2)
$url1 .=$array[$i].'/purge/';
else if($i!=1 && $i != count($array)-1)
$url1 .= $array[$i].'/';
else if($i == count($array)-1)
$url1 .= $array[$i];
}
for($k=0;$k<count($ip_array);$k++)
{
$fp = fsockopen($ip_array[$k], $port, $errno, $errstr, 30);

$out = "";

$output="";

$out = "PURGE $url1 HTTP/1.0\r\n";

$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);

$data="";

while (!feof($fp))

{

$data.= fgets($fp,128);

}

if (eregi("200 OK",$data))
{
echo "\n[". date("d-m-Y h:i:s")."] Clear >< > thanh cong tren server ". $ip."</br>";


echo "</br>result: $data </br>";
}

else
{
echo "\n[". date("d-m-Y h:i:s"smilie."] Clear not OK < > tren server ". $ip."</br>";

}
fwrite($file,$output);
fclose($fp);
}
fwrite($file,"\n"smilie;
fclose($file);


vạ tại chỗ này

if (eregi("200 OK",$data))
{
echo "\n[". date("d-m-Y h:i:s"smilie."] Clear >< > thanh cong tren server ". $ip."</br>";


echo "</br>result: $data </br>";
}

else
{
echo "\n[". date("d-m-Y h:i:s"smilie."] Clear not OK < > tren server ". $ip."</br>";


---> nó chỉ có thể echo 1 lần, nếu vòng lặp chạy tiếp thì nó bị đứng tịa chỗ echo
JK - JH
()()()
LTKT - LTT
[Up] [Print Copy]
  [Programming]   Vấn đề 2 vòng lặp trong PHP 25/02/2012 10:31:28 (+0700) | #8 | 255236
[Avatar]
thienhavodinh
Member

[Minus]    0    [Plus]
Joined: 13/03/2009 20:38:18
Messages: 20
Offline
[Profile] [PM]
Mình hỏi bạn là trong vòng lặp lần một bạn đóng rồi lần 2 bạn không mở thì nó làm kiểu gì?
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|