|
|
|
Appserv : สอบถามเรื่องผลกระทบการเขียนโค้ดวน loop ครับ |
|
|
|
|
|
|
|
ผมสงสัยว่า ข้อ 2 นะ loop เพื่อแสดงรายการข้อมูลเป็นตารางๆ อันนี้ ไป query ใน loop ปะ
แล้วมีพวก fpdf , tcpdf อีกอย่าง ครับ กิน cpu เยอะมาก
|
|
|
|
|
Date :
2014-10-07 23:31:49 |
By :
gaowteen |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หน่วยความจำไม่ใช่ประเด็นหลักครับ แต่การวนลูปไม่รู้จบ ไม่ยอมคลายคอนเนคชั่น นั่นคือประเด็นหลัก
ทำให้ไม่สามารถติดต่อกับคอมฯเครื่องอื่นๆ ได้
หน่่วยความจำรอได้ครับมันมีคิวการอินเทอรัฟ สามารถรอคิวงานได้
แต่ถ้าคอนเนคชั่นเต็มก็จะติดต่อใครไม่ได้อีก ทำให้เวปล่มครับ
ปล. ลองศึกษาเรื่อง mysql_pconnect() ดูครับ
|
ประวัติการแก้ไข 2014-10-08 06:52:57
|
|
|
|
Date :
2014-10-08 06:49:28 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็น Windows ผมยังแนะนำให้ใช้ IIS แทนครับ
|
|
|
|
|
Date :
2014-10-08 08:55:59 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำไมไม่เอาโค้ดมาดูล่ะครับ จะได้รู้ว่าจริงๆเป็นเพราะอะไรกันแน่
|
|
|
|
|
Date :
2014-10-08 09:13:23 |
By :
FRINGE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หรือไม่ตอนที่มันทำงานหนัก ๆ ลองเปิด phpMyAdmin ดูครับ แล้วดู Process ของ MySQL ถ้ามี Slow หรือ ค้าง มันจะแจ้งเลยว่า Query ไหนมีปัญหาครับ
|
|
|
|
|
Date :
2014-10-08 09:18:47 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เป็นที่ mysql ค้างรึเปล่าครับ ผมเคยเจออาการประมาณนี้ แต่เป็นเพราะเปิด connection ของ mysql ไม่เพียงพอต่อจำนวนยูสเซอร์ที่ใช้ในช่วงเวลาเร่งด่วน แล้วก็หน่วยความจำใน mysql เปิดไว้น้อยเกินไป เจอคำสั่ง JOIN เยอะๆ ก็เลยค้างไปเลย พอไปปรับ my.ini แล้วก็ไม่ค้างอีก
และถ้าเป็นเรื่องของการเปิดปิดคอนเนกชั่น ลองลดจำนวนการคิวรี่ให้น้อยลงนะครับ แล้วก็เก็บข้อมูลในหน่วยความจำแบบอาร์เรย์ไปก่อน แล้วค่อยนำไปใช้งานต่ออีกทีเพื่อให้ปิดคอนเนกชั่นเร็วขึ้น
|
|
|
|
|
Date :
2014-10-08 09:26:50 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอขุดกระทู้เดิมละกันครับ เพราะไม่อยากไปตั้งใหม่ เนื่องจากมันก็เรื่องเดียวกัน
ผมไปดูสถานะ เซิฟ mysql ดู เห็นตามภาพเลยครับ
เบื้องต้นผมเดาว่าสาเหตุที่ทำให้เซิฟวิ่ง 99% น่าจะมาจากตัวแดงๆ พวกนี้แหละ แต่ผมไม่รู้ว่าต้องแก้จุดไหน ยังไงบ้าง ( เข้าใจแต่ตรงที่บอกตอน join ไม่ใช้ index )
แล้วก็ตรงส่วน my.ini นี้ ผมก็ไม่รู้ว่าต้องปรับอะไรยังไง ขอคำแนะนำทีครับ
เพราะเท่าที่ดูแล้ว ถ้าแก้ไม่ครบทุกจุด มันคงวิ่ง 99% เรื่อยๆแน่นอน
|
|
|
|
|
Date :
2014-10-16 10:03:54 |
By :
nimirue |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาโค้ดมาดูครับ ปรับยังไงมันก็ไม่ดีขึ้นถ้าคุณเขียนโค้ดไม่ดี
ถ้ามีโค้ดจะได้รู้ชัดๆว่ามันเพราะโค้ดหรือเปล่า ก่อนที่จะไปปรับอย่างอื่น เข้าใจป่ะครับ
|
|
|
|
|
Date :
2014-10-16 10:18:16 |
By :
เฮ้อ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้ส่วนแสดลผลตารางข้อมูลครับ
คือตอนนี้ผมทำหลายหน้ามาก เลยไม่รู้ว่าส่วนมีปัญหาเป็นโค้ดคิวรี่ส่วนไหน เลยหยิบมาไม่ค่อยถูกนัก (จะเอาอันที่เข้าข่ายตัวแดงๆมาให้ดูละกันครับ )
Code (PHP)
<?
mysql_connect("localhost","root","1234") or die ("ติดต่อ Host ไม่ได้");
mysql_select_db("repair") or die ("ติดต่อฐานข้อมูลไม่ได้");
mysql_query("SET NAMES utf8");
?>
...
...
...
<?
$adate = date('Y-m-d');
$date2 = date("Y-m-d",strtotime("-2 days",strtotime($adate)));
echo $id;
$current_page = 1;
if(isset($_GET['page'])){
$current_page = $_GET['page'];
}
$row_per_page = 15;
$start_row = ($current_page - 1) * $row_per_page;
/*$sql = "select SQL_CALC_FOUND_ROWS * FROM repair_od
inner join equipment on eq_id = re_items
inner join eq_problem on p_id = re_detail1
WHERE status = 'active' ORDER BY re_id DESC LIMIT $start_row, $row_per_page";*/
$sql = "select SQL_CALC_FOUND_ROWS * FROM repair_od inner join example.store on store.storecode = s_code INNER JOIN equipment ON eq_id = re_items WHERE repair_od.re_status = 'active' ORDER BY re_id DESC LIMIT $start_row, $row_per_page";
$result = mysql_query($sql) or die (mysql_error());
?>
<div class="container">
<h4>รายการแจ้งซ่อมทั้งหมด</h4>
<br />
<table class="table table-striped">
<tr>
<th width="50"> <div align="center">#</div></th>
<th > <div align="center">รหัสแจ้งซ่อม</div></th>
<th > <div align="center">รหัสสาขา</div></th>
<th > <div align="center">สาขา</div></th>
<th > <div align="center">วันที่แจ้ง</div></th>
<th > <div align="center">อุปกรณ์ที่แจ้ง</div></th>
<th > <div align="center">จุดที่ชำรุด</div></th>
<th > <div align="center">อาการที่แจ้ง</div></th>
<th colspan="2"><div align="center">ตัวเลือก</div></th>
</tr>
<?
while ($objResult = mysql_fetch_array($result)){
$url = $_SERVER['PHP_SELF'];
?>
<tr>
<td><div align="center"><?=$objResult["re_id"];?></div></td>
<td align="center"><?=$objResult["re_code"];?></td>
<td align="center"><?=$objResult["s_code"];?></td>
<td align="center"><?=$objResult["s_name"];?></td>
<td><div align="center"><?=$objResult["re_date"];?></div></td>
<td align="center"><?=$objResult["eq_name"];?></td>
<td align="center"><?=$objResult["re_item2"];?></td>
<td align="center"><?=$objResult["re_detail1"];?></td>
<td align="center" ><a href="report.php?id=<?php echo $objResult["re_id"]?>">แจ้งปิด</a></td>
<td align="center" ><a href="edit_repair.php?type=edit&&id=<?php echo $objResult["re_id"]?>">แก้ไข</a></td>
</tr>
<?
}
?>
</table>
<?
$found_rows = mysql_query("select FOUND_ROWS()");
$total_rows = mysql_result($found_rows, 0, 0);
$total_pages = ceil($total_rows / $row_per_page);
$page_range = 5;
$page_start = $current_page - $page_range;
$page_end = $current_page + $page_range;
?>
<ul class="pagination">
<?
echo "<li><a href=\"$url?page=1\">หน้าแรก</a></li>";
if($current_page > 1){
$pg = $current_page - 1;
echo "<li><a href=\"$url?page=$pg\">ย้อนกลับ</a></li>";
}
//else echo "<li><a href=\"$url?page=1\">หน้าแรก</a></li>";
if($current_page > 1){
$pg = $current_page - 1;
echo "<li><a href=\"$url?page=$pg\">...</a></li>";
}
if($page_start < 1){
$page_end += 1 - $page_start; // เช่น 1-(-2) = 3
$page_start = 1;
}
if($page_end > $total_pages){
$diff = $page_end - $total_pages;
$page_start -= $diff;
if($page_start < 1 ) {
$page_start = 1;
}
$page_end = $total_pages;
}
for($i = $page_start; $i <= $page_end; $i++) {
echo " ";
if($i == $current_page){
echo "<li class='active'><a href=\"#\">$i</a></li>";
}
else {
echo "<li><a href=\"$url?page=$i\">$i</a></li>";
}
echo " ";
}
if($current_page < $total_pages){
$pg = $current_page + 1;
echo "<li><a href=\"$url?page=$pg\">...</a></li>";
}
if($current_page < $total_pages){
$pg = $current_page + 1;
echo "<li><a href=\"$url?page=$pg\">ถัดไป</a></li>";
}
?>
|
ประวัติการแก้ไข 2014-10-16 10:28:35
|
|
|
|
Date :
2014-10-16 10:26:54 |
By :
nimirue |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เช็คก่อนว่าฟิว
store.storecode
re_id
eq_id
re_items
repair_od.re_status
มี index แล้วทุกฟิว
|
|
|
|
|
Date :
2014-10-16 10:38:27 |
By :
เฮ้อ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งั้นอาจจะอยู่ที่ตารางอื่นหรือโค้ดหน้าอื่นครับ
สำหรับโค้ดหน้านี้ไม่น่าจะเป็นปัญหา ถ้าข้อมูลไม่เยอะเป็นแสนๆ row
แต่อย่าลืมนะครับว่า appserv มันก็เก่ามากแล้ว อาจจะเป็นเพราะมันก็ได้
|
|
|
|
|
Date :
2014-10-16 11:08:55 |
By :
เฮ้อ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|