ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingจะเขียน php+mysql อัพเดจ ข้อมูลทุกๆ 4ชมในแต่ละ row ยังไงดีครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: จะเขียน php+mysql อัพเดจ ข้อมูลทุกๆ 4ชมในแต่ละ row ยังไงดีครับ  (อ่าน 450 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Mrpoohling
ก๊วนเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 250



ดูรายละเอียด เว็บไซต์
« เมื่อ: 27 มกราคม 2017, 16:31:52 »

รบกวนเพื่อนๆหน่อยครับ

จะเขียน php+mysql อัพเดจ ข้อมูลทุกๆ 4ชม ในแต่ละ row ยังไงดีครับ

โดยการอัพเดจจะเรียก row ขึ้นมาอัพเดจทีละ 1 row และไล่อัพเดจ row อื่นๆไปเรื่อยๆ

ผมเข้าใจว่าการอัพเดจทุกๆ 4ชม คงต้องใช้ cron job ช่วย แต่ ไม่เข้าใจคำสั้งในการสั่งอัพเดจทีละ row  Cry Cry

ไม่ทราบว่าพอเป็นไปได้ไหม และมี code ตัวอย่างไหมครับ

ขอบคุณล่วงหน้าครับ

บันทึกการเข้า

codernu
Newbie
*

พลังน้ำใจ: 2
ออฟไลน์ ออฟไลน์

กระทู้: 21



ดูรายละเอียด
« ตอบ #1 เมื่อ: 27 มกราคม 2017, 16:54:08 »

ถ้าเป็นผมจะเขียนประมาณนี้ครับ


โค๊ด:
function update_task( $task_id )
{
$task_update_query = "UPDATE tasks SET is_update = 'YES' WHERE id = '$task_id'";
mysql_query( $task_update_query );
}

$tasks_query = "SELECT * FROM tasks WHERE is_update = 'NO'";
$tasks_result = mysql_query( $tasks_query );
while( $task = mysql_fetch_array( $tasks_result ) )
{

update_task( $task['id'] );

}


ปล. Code อาจจะ error เพราะผมเขียนสด ไม่ได้ลอง run นะครับ
« แก้ไขครั้งสุดท้าย: 27 มกราคม 2017, 16:54:40 โดย codernu » บันทึกการเข้า

เราจะรวยไปด้วยกัน @__@
Mrpoohling
ก๊วนเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 250



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 27 มกราคม 2017, 17:08:05 »

ถ้าเป็นผมจะเขียนประมาณนี้ครับ


โค๊ด:
function update_task( $task_id )
{
$task_update_query = "UPDATE tasks SET is_update = 'YES' WHERE id = '$task_id'";
mysql_query( $task_update_query );
}

$tasks_query = "SELECT * FROM tasks WHERE is_update = 'NO'";
$tasks_result = mysql_query( $tasks_query );
while( $task = mysql_fetch_array( $tasks_result ) )
{

update_task( $task['id'] );

}


ปล. Code อาจจะ error เพราะผมเขียนสด ไม่ได้ลอง run นะครับ

ขอบคุณครับ จะลองไปประยุคใช้ดูคับ
บันทึกการเข้า

sputtaro
สมุนแก๊งเสียว
*

พลังน้ำใจ: 139
ออฟไลน์ ออฟไลน์

กระทู้: 910



ดูรายละเอียด
« ตอบ #3 เมื่อ: 27 มกราคม 2017, 17:29:53 »

ถ้าไม่ใช้ Cron
1. ขั้นตอนที่1
การอัพเดทข้อมูลใน PHP + MySQL สามารถใช้เวลาและเงื่อนไขอื่นๆได้ โดยไม่จำเป็นต้องใช้ CRON เสมอไป
เช่น อาศัยเงื่อนไขเวลาของเซอร์เวอร์, เวลาที่เขียนไฟล์ , เวลาที่ดาต้าเบสมีการแก้ไขครั้งล่าสุด
How to get date and time from server
filemtime >> http://php.net/manual/en/function.filemtime.php
Getting the date/time of the last change to a MySQL database
ฯลฯ
คุณสามารถค้นคว้าเพิ่มเติมได้อีกจากอินเตอร์เน็ต

2. ขั้นตอนที่2
เลือกข้อมูลจากตารางที่ต้องการอัพเดท ตารางนั้นต้องมีอินเด็กซ์ไว้สำหรับอ้างอิง (ซึ่งปกติ มันต้องมีอยู่แล้ว)
ถ้าต้องการอัพเดทเพียง 1 เร็คคอร์ด ก็ Update .... WHERE ...เร็คคอร์ดที่ต้องการเพียงเร็คคอร์ดเดียว
ถ้าต้องการอัพเดท 10 เร็คคอร์ด ก็ อาจใช้ foreach หรือ for loop เอาก็ได้แล้วแต่ถนัด

3. ในทางปฏิบัต
เท่าที่ผมทำ มีหลักคือ

3.1 เช็คเวลา
ถ้า เวลาของเซอร์เวอร์ >= 19.01 น.
เลือกตาราง สินค้า
3.2 ดึงข้อมูลจาก เซอร์เวอร์ใหญ่ เพื่อเลือกราคาล่าสุด มาสิบรายการ
โดยข้อมูลสำคัญคือ รหัสสินค้า(ถ้าดึงจาก อเมซอน ก็คือ ASIN ถ้า อาลีเอ็กเพรส ก็คือ productId )
3.3 อัพเดทตาราง สินค้า โดยระบุ ผ่าน foreach หรือ for loop
if(AMAZONASIN=MyASIN){
Update .... WHERE AMAZONASIN=MyASIN;
}

นี่แค่แนวคิดนะครับ ความจริงประยุกต์ได้มากมายถ้าทำความเข้าใจได้ดีพอ

หวังว่าพอจะช่วยได้บ้างนะครับ



« แก้ไขครั้งสุดท้าย: 27 มกราคม 2017, 17:50:25 โดย sputtaro » บันทึกการเข้า
Mrpoohling
ก๊วนเสียว
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 250



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 27 มกราคม 2017, 17:57:06 »

ถ้าไม่ใช้ Cron
1. ขั้นตอนที่1
การอัพเดทข้อมูลใน PHP + MySQL สามารถใช้เวลาและเงื่อนไขอื่นๆได้ โดยไม่จำเป็นต้องใช้ CRON เสมอไป
เช่น อาศัยเงื่อนไขเวลาของเซอร์เวอร์, เวลาที่เขียนไฟล์ , เวลาที่ดาต้าเบสมีการแก้ไขครั้งล่าสุด
How to get date and time from server
filemtime >> http://php.net/manual/en/function.filemtime.php
Getting the date/time of the last change to a MySQL database
ฯลฯ
คุณสามารถค้นคว้าเพิ่มเติมได้อีกจากอินเตอร์เน็ต

2. ขั้นตอนที่2
เลือกข้อมูลจากตารางที่ต้องการอัพเดท ตารางนั้นต้องมีอินเด็กซ์ไว้สำหรับอ้างอิง (ซึ่งปกติ มันต้องมีอยู่แล้ว)
ถ้าต้องการอัพเดทเพียง 1 เร็คคอร์ด ก็ Update .... WHERE ...เร็คคอร์ดที่ต้องการเพียงเร็คคอร์ดเดียว
ถ้าต้องการอัพเดท 10 เร็คคอร์ด ก็ อาจใช้ foreach หรือ for loop เอาก็ได้แล้วแต่ถนัด

3. ในทางปฏิบัต
เท่าที่ผมทำ มีหลักคือ

3.1 เช็คเวลา
ถ้า เวลาของเซอร์เวอร์ >= 19.01 น.
เลือกตาราง สินค้า
3.2 ดึงข้อมูลจาก เซอร์เวอร์ใหญ่ เพื่อเลือกราคาล่าสุด มาสิบรายการ
โดยข้อมูลสำคัญคือ รหัสสินค้า(ถ้าดึงจาก อเมซอน ก็คือ ASIN ถ้า อาลีเอ็กเพรส ก็คือ productId )
3.3 อัพเดทตาราง สินค้า โดยระบุ ผ่าน foreach หรือ for loop
if(AMAZONASIN=MyASIN){
Update .... WHERE AMAZONASIN=MyASIN;
}

นี่แค่แนวคิดนะครับ ความจริงประยุกต์ได้มากมายถ้าทำความเข้าใจได้ดีพอ

หวังว่าพอจะช่วยได้บ้างนะครับ






ขอบคุณมากครับ ผมก็กำลังคิดจะหาทางอัพเดจราคา amazon พอดี  wanwan017 wanwan017
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์