รบกวนดูโค้ดทีครับ โดยด่วน เกิด การ CONNECT MYSQL แล้ว SLEEP

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

uploadzaa
PHP Newbie
PHP Newbie
โพสต์: 1
ลงทะเบียนเมื่อ: 22/11/2008 6:55 pm

รบกวนดูโค้ดทีครับ โดยด่วน เกิด การ CONNECT MYSQL แล้ว SLEEP

โพสต์โดย uploadzaa » 22/11/2008 6:58 pm

รบกวนดูโค้ดนี้นะครับ ใช้งานได้ปกติ แต่ เชื่อมต่อ ฐานข้อมูล แล้ว จะมี CONNECTION ที่ SLEEP อยู่มากมาย ทำ ให้ MYSQL ERROR TOO MANY CONNECTION เมื่อใช้งานไปนานๆ หาจุดบกพร่องไม่เจอ หากต้องเพิ่มเติม โค้ดอะไร รบกวนบอกด้วยครับ เท่าที่รู้มาคือ ต้องใส่ โค้ด ปิด connection ของ mysql แต่หาจุดที่จะใส่ไม่เจอ หรือ ว่าต้องทำอย่างไร ชี้แจงด้วยครับ

<?php
require_once("include/vars.php");
require_once("include/db.php");
require_once("include/functions.php");
$err=array();
session_start();
{
$key=isset($_REQUEST["id"])?$_REQUEST["id"]:0;
$qry="SELECT file_name, size, dir, mime_type,no_of_dwnld, expire_time, max_dwnld FROM ".$db->tb("fileinfo")." WHERE idkey='$key' AND link_status=1";
$db->query($qry);
//ob_start();
if($db->getrownum()==0) $err[]="Link suspended or does not exists.";
else
{
$myfile=$db->getrow();
if($myfile[5]<time()) $err[]="File download time expired.";
if($myfile[4]>=$myfile[6]) $err[]="File download for ".$myfile[4]." times. It can't be downloaded anymore";
}
}
if(count($err)==0)
{
$qry="UPDATE ".$db->tb("fileinfo")." SET no_of_dwnld=no_of_dwnld+1 WHERE idkey='$key'";
$db->query($qry);
$filetype = $myfile[3];
if ($filetype == "" ) $filetype = "application/octet-stream";


//$dl_path=HostPath()."uploads/".$myfile[2]."/".$myfile[0];
$dl_path="uploads/".$myfile[2]."/".$myfile[0];
$fh = fopen( $dl_path, 'rb' );
if ($myfile[1] && PARTIAL_TRANSFER && isset($_SERVER['HTTP_RANGE']))
{
// Support for partial transfers enabled and browser requested a partial transfer
header("HTTP/1.1 206 Partial content\n");
$start = preg_replace(array("/(\040*|)bytes(\040*|)=(\040*|)/","/(\040*|)\-.*$/"),array("",""),$_SERVER['HTTP_RANGE']);
if ($myfile[1] < $start)
{
header("HTTP/1.1 411 Length Required\n");
echo "Trying to download past the end of the file. You have probably requested the wrong file. Please try again.";
}
$transfer_size = $myfile[1] - $start;
header("Accept-Ranges: bytes");
header("Content-Range: bytes ".$transfer_size."-".($myfile[1]-1)."/".$myfile[1]);
header("Content-Length:".$transfer_size."\n");
fseek($fh,$startat_byte);
}
else
{
header("HTTP/1.1 200 OK\n");
if ( $myfile[1] )
header("Content-Length: ".(string)($myfile[1]) );
}

//Print the http header
header("Cache-control: private\n"); // fix for IE to correctly download files
header("Pragma: no-cache\n"); // fix for http/1.0
header("Content-Type: ".$filetype);
header("Content-Disposition: attachment; filename=".$myfile[0]);
header("Content-Transfer-Encoding: binary");
if (SPEED_LIMIT != 0)
{
$chunk = SPEED_LIMIT * 1024;
while(!feof($fh))
{
echo fread($fh, $chunk);
flush();
sleep(1);
}
}
else
{
while(!feof($fh))
{
echo fread($fh, 4096);
}
}
}
else
{
fpassthru($fh);
}
fclose($fh);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title><?=SITE_NAME?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
<script language="JavaScript" src="script.js"></script>
</head>

<body>
<table width="740" border="0" align="center" cellpadding="0" cellspacing="0" style="border: solid 1px #999999">
<tr>
<td></td>
</tr>
<tr>
<td valign="top">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td><table width="50%" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" class="ltxt"> <h4><strong>File Transfer: Download
Now</strong></h4>
<hr> </td>
</tr>
<?php
if(count($err)>0)
{
?>
<tr>
<td class="ltxt"><font color="#FF0000">
<?php
foreach($err as $errmsg)
print "<li>$errmsg</li>";
?>
</font></td>
</tr>
<?php
}
?>
<tr>
<td class="ltxt"><strong><a href="index.php" class="ltxt">Home</a></strong></td>
</tr>
</table>
<p>&nbsp;</p></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</body>
</html>

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 21378
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: รบกวนดูโค้ดทีครับ โดยด่วน เกิด การ CONNECT MYSQL แล้ว SLEEP

โพสต์โดย mindphp » 22/11/2008 9:05 pm

ใช้ class อะไรเป็นตัวช่วย connect ฐานข้อมูลครับ
และใช้ โฮสของตัวเอง หรือ ว่า เช่าเค้าเอาครับ

ทางแก้มี สองทางคือ
1. config ให้ mysql เก็บเวลา connection ให้น้อยลง (ตัด connection ให้เร็วขึ้น)
2. php เปิด connect แล้วปิดทันทีเมื่อใช้เสร็จ เพราะ เท่าที่ดูคร่าวๆ คงทำระบบให้ดาวโหลดไฟล์ใช่ไหมครับ connection มันยังไม่ปิดจนกว่า ไฟล์ php ไฟล์นั้นจะทำงานเสร็จ

ปล. รบกวนใส่ BBCode ในส่วนของ script html,php ด้วยครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: viewforum.php?f=29
รับอบรม และพัฒนาระบบ: viewtopic.php?f=6&t=2042


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 29 และ บุคคลทั่วไป 0 ท่าน