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

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

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

User avatar
Ittichai_chupol
PHP VIP Members
PHP VIP Members
Posts: 2958
Joined: 19/09/2018 10:33 am

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

Post by Ittichai_chupol » 02/08/2019 1:45 pm

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

Code: Select all

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 รอบครับ ซึ่งทำให้มีความช้า
จึงอยากทราบว่า ควรจะมีการปรับปรุงอย่างไรครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22165
Joined: 22/09/2008 6:18 pm
Contact:

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

Post by mindphp » 02/08/2019 1:54 pm

หา 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

User avatar
Ittichai_chupol
PHP VIP Members
PHP VIP Members
Posts: 2958
Joined: 19/09/2018 10:33 am

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

Post by Ittichai_chupol » 02/08/2019 2:40 pm

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

เพราะว่า event viewtopic_cache_user_data ที่ผมใช้ครับ มันดึง user ที่ต้องการไว้แล้วครับ

Post Reply

Return to “Programming - PHP”

Who is online

Users browsing this forum: Bing [Bot], Google Adsense [Bot] and 61 guests