อยากทราบวิธีการปรับแก้ไข้ จำนวนโพสต์ของสมากชิกในหน้าโพสต์ โดยการทำให้ เกิดการ Query น้อยที่สุดครับ ใน phpbb

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

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

ภาพประจำตัวสมาชิก
Ittichai_chupol
PHP VIP Members
PHP VIP Members
โพสต์: 5410
ลงทะเบียนเมื่อ: 19/09/2018 10:33 am

อยากทราบวิธีการปรับแก้ไข้ จำนวนโพสต์ของสมากชิกในหน้าโพสต์ โดยการทำให้ เกิดการ Query น้อยที่สุดครับ ใน phpbb

โพสต์ที่ยังไม่ได้อ่าน โดย Ittichai_chupol »

ผมต้องการที่จะเปลี่ยนแปลงผลการแสดงจำนวนโพสต์ของสมาชิกที่แสดงแสดงในหน้าโพสต์ ตำแหน่งตามในรูป
Selection_999(1871).png
โดยผมได้ทดสอบคิดโคดเพื่อปรับโดยการใช้งาน Event phpbb มาช่วยดังนี้ครับ

โค้ด: เลือกทั้งหมด

public function viewtopic_cache_user_data($event) {
global $auth;
global $phpbb_container;
$phpbb_content_visibility = $phpbb_container->get('content.visibility');
$post_sum = 0;
$ex_fid_ary = array_unique(array_merge(array_keys($auth->acl_getf('!f_read', true)), array_keys($auth->acl_getf('!f_search', true))));
$m_approve_topics_fid_sql = $phpbb_content_visibility->get_global_visibility_sql('post', $ex_fid_ary, 'p.'); // ดึงเเบบ topics เฉพาะ topics ที่มีสิท
$moderator_permissions_forum = $auth->acl_get('m_');
$event['poster_id'];
if ($event['poster_id'] != $this->user->data['user_id'] && $moderator_permissions_forum != 1) {
$where_user_id = ($event['poster_id']) ? ' AND p.poster_id =' . $event['poster_id'] : ' ';
if ($where_user_id != null) {
$sql_ray = array(
'SELECT' => 'DISTINCT count(p.post_id) as count_post ',
'FROM' => array(
POSTS_TABLE => 'p',
),
'WHERE' => $m_approve_topics_fid_sql . $where_user_id . ' AND p.post_id NOT IN (select post_id FROM ' . $this->table_prefix . 'anonymous' . ' WHERE user_id = ' . $event['poster_id'] . ')',
' ORDER_BY' => ' p.post_time DESC',
);
$sql = $this->db->sql_build_query('SELECT', $sql_ray);
//echo $sql."<hr>";
$result = $this->db->sql_query($sql);
$row = $this->db->sql_fetchrow($result);
$post_sum = $row['count_post'];


$post_num = $event['user_cache_data'];
$post_num['posts'] = $post_sum;
$event['user_cache_data'] = $post_num;
}
}
}
ซึ่งก็สามารถทำงานได้ผลลัพธ์ตามที่ผมต้องการครับ เพียงจะทำให้เกิดการ Query ที่มีมากเกินไปครับ เนื่องจาก จะเป้นการ Query ตามจำนวนของ user ที่โพสต์นะครับ
เช่นว่า ถ้าหาก มี user 20 user มาโพสต์ ก็จะทำการ Query 20 รอบครับ ซึ่งทำให้มีความช้า
จึงอยากทราบว่า ควรจะมีการปรับปรุงอย่างไรครับ
ขอให้วันนี้เป็นวันที่ดี
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41336
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: อยากทราบวิธีการปรับแก้ไข้ จำนวนโพสต์ของสมากชิกในหน้าโพสต์ โดยการทำให้ เกิดการ Query น้อยที่สุดครับ ใน phpbb

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

หา user ทั้งหมดก่อน แล้วยัดใส่ตัวแปล array ไว้ แล้วมาสร้าง query เฉพาะ ข้อมูลของ user ที่ต้องการอีกรอบ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
Ittichai_chupol
PHP VIP Members
PHP VIP Members
โพสต์: 5410
ลงทะเบียนเมื่อ: 19/09/2018 10:33 am

Re: อยากทราบวิธีการปรับแก้ไข้ จำนวนโพสต์ของสมากชิกในหน้าโพสต์ โดยการทำให้ เกิดการ Query น้อยที่สุดครับ ใน phpbb

โพสต์ที่ยังไม่ได้อ่าน โดย Ittichai_chupol »

หา user ทั้งหมดก่อน แล้วยัดใส่ตัวแปล array คือผมต้องใช้ event อื่นหา user มาก่อน หรือหาได้จาก event viewtopic_cache_user_data ได้เลยไหมครับ

เพราะว่า event viewtopic_cache_user_data ที่ผมใช้ครับ มันดึง user ที่ต้องการไว้แล้วครับ
ขอให้วันนี้เป็นวันที่ดี
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

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

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 74