[WEBDEV Room!] แชร์ทุกเรื่อง ถ้าเป็นเว็บ!

เริ่มโดย EThaiZone, 05 สิงหาคม 2008, 22:39:50

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

lowprofile

อ้างถึงจาก: pugkung ใน 06 สิงหาคม 2008, 21:37:43
อ้างถึงจาก: siamman ใน 06 สิงหาคม 2008, 20:21:58
อ้างถึงจาก: ninetua ใน 06 สิงหาคม 2008, 20:17:02
เคยทำเว็บงานนึง มันให้เป็นรายชม.ให้เราออกแบบทุกอย่าง ชม.ละ 350 นั่งคิดนั่งเขียนรูปแบบ พร้อมกับทำtemplateไปให้มันดู ใช้ไป10 ชม. มันว่าแพง - -* เวลาถามมันอยากได้แบบไหน บอกไม่มีไอเดีย ให้ผมไปคิดมา หรือว่าตอนผมนั่งคิดรูปแบบคิดคอนเซ็ป ผมห้ามคิดตังค์มันอ่ะ  :P :P

ผมก็เคยเจอเหมือนกัน พวกที่ชอบบอกว่า "ไห้ทำมาไห้ดูก่อน" พวกนี้โคตระเกลียดเลย
ถ้าไห้ผมคิดคอนเซ็ปงานไห้ผมคิดราคาค่อนข้างสูงเพราะบวกค่าเสียเวลาคิด ผมเคยพลาดไปหลายงานเหมือนกัน ประมาณว่าของานไว้ก่อน พอถึงคราวเสนอคอนเซ็ปยังงัยก็ไม่โดนซะที กว่าจะได้ปาไปหลายเดือน

สรุป ตอนนี่ทำเทมเพลตขายรู้สึกแฮ๊ปปรี้อย่างบอกไม่ถูก

เรื่องค่าจ้างนี้มันแล้วแต่ การพูดครับ ถ้าอยากได้งานแพง ๆ จ้างคนพูดเก่ง ๆ มาไว้ซักคน หว่านล้อมเข้าไป ยังไงก็ได้
งานเดียววกัน คนหนึ่งขายได้ สี่ ห้าหมื่น  อีกคนขายได้ หมื่น สองหมื่น  งานพวกนี้มันอยู่ที่ปากครับ แล้วก็อยู่ที่ USER ด้วยครับ

ที่สำคัญนะครับ (อันนี้ผมคิดเองป่าวไม่รู้) อยู่ที่สถาณการณ์ของเราในตอนนั้นครับ
ว่าเรา ร้อนงานหรือปล่าว ถ้าเราร้อน เราก็ (ถูก ๆ ก็รับฟ่ะ ดีกว่าไม่มีไรกิน)

ถ้าเราไม่รีบ อาจเรียกราคาได้สูงขึ้นก็เป็นได้



เคยเจองานนึง มีบริษัทนึงให้เข้าไปพรีเซ้น พร้อมเสนอพร็อบเพอซ่อล ก็เข้าไปแล้วเสนอไอเดียแบบเต็มที่ตามปกติ
มารู้ทีหลังว่าคนที่ให้เข้าพรีเซ้นน่ะ มันเอาไอเดียจากงานที่เสนอไปพร้อมกะพร็อบเพอซ่อลนั่นแหละ
ไปเสนอเจ้านายมัน แล้วก็ไปจ้างอีกที่ที่มันรู้จักทำ สบายเลย ผลงานก็ได้ แถมได้ใต้โต๊ะอีก
แสบจริงๆ  :-X



หรือเขาทำกันแบบนี้เป็นปกติอยู่แล้วก็ไม่รู้นะ ตอนหลังๆ มาเลยทำแบบเจ็กแปะ มีเท่านี้ เอามั้ย
ไม่เอาก็ไปหาเอาข้างหน้า ตูไม่ง้อเฟ้ย ก็เลยจนมาถึงทุกวันนี้
:P
ชีวิตนี้น้อยนัก

๏ พายเถิดพ่ออย่ารั้ง   รอพาย
จวนตะวันจักสาย   ส่องฟ้า
ของสดสิ่งควรขาย   จักขาด ค่าแฮ
ตลาดเลิกแล้วอ้า   บ่นอื้นเอาใคร ๚ะ๛


คราวนี้เป็นคราวเงินหมด
ธนาคาร : ไทยพาณิชย์ จำกัด (มหาชน) สาขา : อุดรธานี
ชื่อบัญชี : โครงการช่วยชาติโดยหลวงตามหาบัว ญาณสัมปันโน
เลขที่บัญชี : 510-2-83957-5

EThaiZone

"ภาคต่อกับการต่อหางให้ PHP"

ต่อจากภาคที่แล้ว

ขั้นแรกให้สร้างไฟล์ PHP  ที่จะเป็นเขามาสักไฟล์
สมมุติว่าชื่อ foot.php ละกัน

พอเราสร้าง ให้ลองใส่โค้ดนี้ลงไป
echo "I am Foot of PHP.";
แล้วเซฟ

ต่อมาให้แก้ .htaccess เพิ่มโค้ดนี้ลงไป
php_value auto_append_file foot.php
แล้วเซฟ


เท่านี้ เราก็จะสามารถต่อหางให้ไฟล์ php ทุกไฟล์ได้แล้ว
ลองเปิด php หน้าไหนก็ได้่ ข้อความ I am Foot of PHP. จะไปติดอยู่ข้างล่างเสมอ

ข้อดีของมันจริงๆ คืออะไร มันแล้วแต่คนประยุกต์ (กึ๋น)
ยกตัวอย่าง... มันคงจะง่าย ถ้าผมอยากยัดโค้ดตรวจ status
โดยไม่ต้องแก้โค้ดเดิมให้ยุ่งยาก

--------------------------------------------------

555+ ผมเอาข้อความของการสวมเขามาแก้นิดหน่อยแล้วโพส อย่าถือสาละกันนะครับ  :)

คราวหน้าจะมาพูดเรื่องแนวนี้อีกโพส แต่จะเป็นสำหรับ html
จะได้ครบสูตรทั้ง php และ html เลย  :)

Kazamatsuri

ไม่มีอะไรให้เขียน มีแต่เรื่องมาถามได้มั้ยอ่ะ  :P

กำลังสงสัยว่าการนับจำนวน record set ใช้แบบไหนถึงจะดีที่สุดครับ
ระหว่าง

แบบที่ 1

SELECT COUNT(*) FROM tablesName WHERE condition LIMIT 50;


กับ

SELECT SQL_CALC_FOUND_ROWS FROM tableName WHERE condition LIMIT 50;
SELECT FOUND_ROWS();


หรือใช้ mysql_num_rows(); ไปเลย

แบบไหนประหยัด resource และ/หรือทำ query ได้ดีที่สุดครับ

เคยจะโดนโฮสเตะออกเพราะเรื่องพวกนี้มาแระ :P

EThaiZone

ู^
^
ถ้าเป็นผมนะ ผมไม่ใช้ซักกะตัว
อย่างมากก็เปลือง txt เพิ่มอีกไฟล์

เก็บตัวเลขจำนวนที่มีการกระทำกับจำนวน record
อย่างมากก็ดึงข้อมูลที่เซฟลง txt มาเป็นตัวเลข
ถ้าเพิ่ม record ก็บวกไปหนึ่ง
ถ้าลบ ก็ลบไปหนึ่ง

ทำแบบนี้จะได้ไม่ต้องยุ่งกับ mysql ในขั้นตอนนี้ั
ก็จะไม่โดนโฮสเตะครับ

:)

EThaiZone

ตัวอย่าง

$cache_record_rows = "record_rows.txt";

//Make Cache
if(!file_exists($cache_record_rows)) {
$query2="SELECT COUNT(*) FROM tablesName WHERE condition LIMIT 50;";
$rows=mysql_query($query2);
if(empty($rows) $rows = "0";
file_put_contents($cache_record_rows, $rows); //คำสั่งนี้มีใน php5 เท่านั้น ถ้า php4 ก็ใช้ fopen เปิด แล้วค่อยสั่งเขียนเอา
}

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";

//Add Rows
$rows++;
file_put_contents($cache_record_rows, $rows);
echo "Update Rows!<br>";

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";

//Remove Rows
$rows--;
file_put_contents($cache_record_rows, $rows);
echo "Remove Rows!<br>";

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";


ประมาณนี้

siamman

ู^
^
^
อันนี้เจ๋งดีครับ ขอบคุณมากๆ

แล้วมันมีข้อเสียอะไรมั้ยครับ อย่างเช่นถ้าข้อมูลมันเยอะ จะมีปัญหามั้ย

pugkung

#46
อ้างถึงจาก: EThaiZone ใน 08 สิงหาคม 2008, 08:40:12
ตัวอย่าง

$cache_record_rows = "record_rows.txt";

//Make Cache
if(!file_exists($cache_record_rows)) {
$query2="SELECT COUNT(*) FROM tablesName WHERE condition LIMIT 50;";
$rows=mysql_query($query2);
if(empty($rows) $rows = "0";
file_put_contents($cache_record_rows, $rows); //คำสั่งนี้มีใน php5 เท่านั้น ถ้า php4 ก็ใช้ fopen เปิด แล้วค่อยสั่งเขียนเอา
}

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";

//Add Rows
$rows++;
file_put_contents($cache_record_rows, $rows);
echo "Update Rows!<br>";

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";

//Remove Rows
$rows--;
file_put_contents($cache_record_rows, $rows);
echo "Remove Rows!<br>";

//Get Rows
$rows = @intval(@file_get_contents($cache_record_rows));
echo "Found $rows<br>";


ประมาณนี้
อ้างถึงจาก: siamman ใน 08 สิงหาคม 2008, 09:08:57
ู^
^
^
อันนี้เจ๋งดีครับ ขอบคุณมากๆ

แล้วมันมีข้อเสียอะไรมั้ยครับ อย่างเช่นถ้าข้อมูลมันเยอะ จะมีปัญหามั้ย

ไม่น่าจะมีนะครับ เพราะแค่ query ครั้งแรกจาก ฐานข้อมูล ทีนี้พอมีการ กระทำใด ๆ กับ ฐานข้อมูลตัวนี้ ก็อาศัยการติดต่อไฟล์เอา

อย่างเช่น เพิ่ม record ในฐานข้อมูลก็ Add Row

:)

พึงนึกได้ แล้วถ้าเป็นการ Query จากการ Search ละครับ ต้องการทราบว่าผลลัพธ์ที่ได้จากการค้นหา จะใช้วิธีไหนดี   ???

ถ้าไม่ว่าอะไร ถามต่อได้ไหมครับว่า  มีวิธีที่จะทำให้ field ที่เป็น auto id นั้นมันเรียงเลขแบบต่อกันอ่ะครับ เช่น

ปกติ รันเลขมาได้  1,2,3,4,5,6,7  แล้วต้องลบ row 3 ออกไป พอมีการเพิ่ม row ใหม่ มันก็จะไปเลข 8

ถ้าต้องการให้ไปแทนที่เลข 3 จะมีวิธีทำอย่างไรครับ

จริง ๆ ผมทำได้อยู่ แต่คิดว่า วิธีของผมน่าจะกิน ทรัพยากรเครื่อง เพราะต้องติดต่อฐานข้อมูล ทุกครั้งที่จะสร้าง row ใหม่เพื่อเอามานับ แถว  :P

EThaiZone

ตัวอย่างข้างบนนั้น ผมอยากให้มองว่าเอาแยกไปใช้นะเช่น

make cache ส่วนนี้ก็อาจมองว่าไว้ใช้อัพเดตแคช
เช่นอาจทำเป็น cron job รันทุกวันตอนเที่ยงคืน ระบบจะได้ไม่ผิดพลาด

ส่วนเวลาใช้จริงกับตัวเว็บ ก็ใช้พวก get rows หรือ add rows ในส่วนนั้นไป

อะไรแบบนี้อะ

-------------------------------------
อ้างถึงแล้วถ้าเป็นการ Query จากการ Search ละครับ ต้องการทราบว่าผลลัพธ์ที่ได้จากการค้นหา จะใช้วิธีไหนดี
เป็นผมจะทำแคช query การ search อาจจะลง txt
ไม่ก็ mysql โดยสร้าง table ใหม่ สำหรับแคชไว้เฉพาะ (เหมาะกะโฮสที่มีการนับ node file)

ข้อดีนอกจากการแคช
เป็นผมจะใช้คำ last search แล้วแปะไว้หน้าแรกของเว็บ
แล้วอาจทำเป็นเหมือนพวก tag ของเว็บ 2.0 คือ
อาจนับจำนวนคลิกขาเข้าด้วย แล้วแสดงตัวใหญ่กว่า ใน tag ที่มีคนคลิกเยอะ
ประมาณนี้ครับ

อ้างถึงถ้าไม่ว่าอะไร ถามต่อได้ไหมครับว่า  มีวิธีที่จะทำให้ field ที่เป็น auto id นั้นมันเรียงเลขแบบต่อกันอ่ะครับ เช่น
ปกติ รันเลขมาได้  1,2,3,4,5,6,7  แล้วต้องลบ row 3 ออกไป พอมีการเพิ่ม row ใหม่ มันก็จะไปเลข 8
ถ้าต้องการให้ไปแทนที่เลข 3 จะมีวิธีทำอย่างไรครับ

ถ้ามองปัญหา ผมว่าเราต้องมองไปถึงต้นเหตุด้วยอะ
ต้นเหตุคือมีการลบ row เก่า ในตรงกลางที่เราไม่รู้
จึงทำให้ถ้าเราคิดแบบหยาบๆ ก็คือต้องตรวจไล่ query ซึ่งกินแน่ๆ

ดังนั้นก่อนอื่น ในเวลาที่ลบ row ไหนทิ้งไป ก็บันทึกเลขนั้น
ไว้ว่าเป็นเลขว่าง (อาจจะลงแคชไฟล์ หรืออะไรก็ตามสะดวก) แล้วเวลาจะมีการ insert ใหม่
ก็ค่อยไปตรวจในแคชก่อนว่ามีเลขว่างไหม
ถ้าไม่มี ถึงค่อย insert โดยปล่อยเป็นหน้าที่ของ auto increment ไป

อารมณ์เหมือนก่อนจอดรถ ก็มองหาที่ว่าง แต่เป็นการยากถ้าต้องขับไล่ดู
แต่ถ้ายามมีบันทึกไว้ ว่ามีการเข้าออกไปยังไงบ้างแล้ว
คนก็ไม่ต้องไล่ขับหาที่จอดเอง ลำบากยามคนเดียว
แต่ดีกว่าเปลืองน้ำมันลิตรละ 30 กว่าบาท ^^"

ผมเองก็ไม่ทราบนะ ว่า mysql มีฟังค์ชั่น หรือการเขียนอะไรพิเศษตรงนี้ไหม
ในขณะนี้ก็ตอบได้เท่านี้

pugkung

โอ้ว ขอบคุณครับ

ได้ไอเดีย ไปเขียนเลย thx หลาย ๆ ครับ  :)

qwert001

มีวิธีให้คำสั่ง php ทำงานโดยไม่ต้อเปิดหน้าเวบไหมครับ เช่น พอเที่ยงคืนก็ส่งเมลถึงผมอัตโนมัติเลยครับ :-*
งดรับงานถาวรครับ อยากทำอย่างอื่นบ้าง... 
[direct=http://www.thaihomelist.com/post.php]ลงประกาศบ้าน ฟรี[/direct] [direct=http://www.thaihomeads.com]ขายบ้าน เช่าบ้าน[/direct][direct=http://travel.thaihomelist.com/]จองโรงแรม รีสอร์ท[/direct]
[direct=http://travel.thaihomelist.com/hotel-th-161923-เซ็นทาราแกรนด์มิราจ.html]เซ็นทารา แกรนด์ มิราจ บีช[/direct][direct=http://www.thaipropertyfund.com]กองทุนรวมอสังหาฯ[/direct]

paradox_073

อ้างถึงจาก: qwert001 ใน 08 สิงหาคม 2008, 11:32:34
มีวิธีให้คำสั่ง php ทำงานโดยไม่ต้อเปิดหน้าเวบไหมครับ เช่น พอเที่ยงคืนก็ส่งเมลถึงผมอัตโนมัติเลยครับ :-*


ตั้ง cronjob ใช่เปล่า

EThaiZone

อ่านเรื่อง cron job
http://www.thaiseoboard.com/index.php/topic,30624.0.html

:P

ITAXIz

ยังงเรื่อง แคช กะ sql อยู่เลย เดยวอ่านพวก mysql เยอะๆก่อนละกันครับ

ขอบคุณครับ

qwert001

อ้างถึงจาก: paradox_073 ใน 08 สิงหาคม 2008, 11:36:25
อ้างถึงจาก: qwert001 ใน 08 สิงหาคม 2008, 11:32:34
มีวิธีให้คำสั่ง php ทำงานโดยไม่ต้อเปิดหน้าเวบไหมครับ เช่น พอเที่ยงคืนก็ส่งเมลถึงผมอัตโนมัติเลยครับ :-*


ตั้ง cronjob ใช่เปล่า

อ้างถึงจาก: EThaiZone ใน 08 สิงหาคม 2008, 11:45:57
อ่านเรื่อง cron job
http://www.thaiseoboard.com/index.php/topic,30624.0.html

:P

ขอบคุณมากๆๆๆๆๆๆๆๆๆครับ ไม่เคยได้ยินเลย "cron job"  :P

งดรับงานถาวรครับ อยากทำอย่างอื่นบ้าง... 
[direct=http://www.thaihomelist.com/post.php]ลงประกาศบ้าน ฟรี[/direct] [direct=http://www.thaihomeads.com]ขายบ้าน เช่าบ้าน[/direct][direct=http://travel.thaihomelist.com/]จองโรงแรม รีสอร์ท[/direct]
[direct=http://travel.thaihomelist.com/hotel-th-161923-เซ็นทาราแกรนด์มิราจ.html]เซ็นทารา แกรนด์ มิราจ บีช[/direct][direct=http://www.thaipropertyfund.com]กองทุนรวมอสังหาฯ[/direct]

icez

เรื่องการนับจำนวนแถวในตาราง
_http://www.icez.net/blog/25



เพิ่มเติมจากใน blog:

MySQL จะทำการ optimize คำสั่ง SELECT COUNT(*) FROM TABLE แบบไม่มี condition อยู่แล้วครับ
ไม่ว่าฐานข้อมูลจะใหญ่ขนาดไหน select count(*) จะไปดึงข้อมูลจำนวน record มาจาก dbinfo ของตารางครับ

ส่วนถ้ามี condition ด้วยก็ช่วยให้เร็วขึ้นได้เหมือนกัน


แต่ห้ามใช้ mysql num rows ในการนับจำนวนแถวโดยเด็ดขาด
ไม่งั้นอาจโดนเตะกระเด็นจาก host เอาได้ง่ายๆ ครับ
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

EThaiZone

อ้างถึงจาก: ITAXIz ใน 08 สิงหาคม 2008, 11:50:27
ยังงเรื่อง แคช กะ sql อยู่เลย เดยวอ่านพวก mysql เยอะๆก่อนละกันครับ

ขอบคุณครับ
หมายถึงแคช result จาก mysql ที่เราจะใช้ลงไฟล์อื่นอย่างอื่น

เช่นสมมุติ query มาแล้ว fetch เป็น array แล้ว
ก็อาจใช้ serialize เปลี่ยนเป็น text แล้วค่อยบันทึก

ส่วนการบันทึกแคชลง mysql
ก็คือแค่สร้างตารางไว้เก็๋บข้อมูลเหมือนปกติ
เพียงแต่มาเก็บไว้ ก็เพราะเก็บลงไฟล์ แล้วมันจะเปลือง node

ยกตัวย่าง เก็บแคชการ search + เผื่อทำแท็กแนว 2.0
ก็มี 3 ฟิลด์
keywork อันนี้เป็น primary key ใช้เก็บค่าคำ search (อย่าคิดว่า primary key ต้องเป็นตัวเลขเท่านั้น)
cache อันนี้ก็อาจใช้เก็บ array ที่ serialize ก็ได้ แล้วเวลาใช้่ค่ิอย unserialize
้hits อันนี้ใช้ก็ค่าที่มีคนดูในหน้า search คำนั้นๆ

นึกภาพไม่ก็ก็แนวนี้
http://www.thaiseoboard.com/index.php/topic,6920.msg94077.html#msg94077

โดยเอาเอาค่า % ที่ได้มาเป็นเกณฑ์การคำนวนหาขนาดฟอนต์ที่จะแสดง tag ก็ได้

:)

pugkung

อ้างถึงจาก: icez ใน 08 สิงหาคม 2008, 12:06:25
เรื่องการนับจำนวนแถวในตาราง
_http://www.icez.net/blog/25



เพิ่มเติมจากใน blog:

MySQL จะทำการ optimize คำสั่ง SELECT COUNT(*) FROM TABLE แบบไม่มี condition อยู่แล้วครับ
ไม่ว่าฐานข้อมูลจะใหญ่ขนาดไหน select count(*) จะไปดึงข้อมูลจำนวน record มาจาก dbinfo ของตารางครับ

ส่วนถ้ามี condition ด้วยก็ช่วยให้เร็วขึ้นได้เหมือนกัน


แต่ห้ามใช้ mysql num rows ในการนับจำนวนแถวโดยเด็ดขาด
ไม่งั้นอาจโดนเตะกระเด็นจาก host เอาได้ง่ายๆ ครับ

จริงเหรอครับนี้ มิน่า ตอนเรียน จารย์ก็บอกให้ใช้ count (*) เหมือนกัน

อ้างถึงขอบคุณมากๆๆๆๆๆๆๆๆๆครับ ไม่เคยได้ยินเลย "cron job"  

ผมก็มารู้จักในนี้เหมือนกัน บอกตรง ๆ  PHP ผมเก่งขึ้นจากการเข้า บอร์ดเสียว นะไม่ได้ไปบอร์ด อื่นเลย   :)

EThaiZone

อ้างถึงจาก: icez ใน 08 สิงหาคม 2008, 12:06:25
เรื่องการนับจำนวนแถวในตาราง
_http://www.icez.net/blog/25

จากในบล็อก
อ้างถึงคำสั่ง SELECT COUNT(*) ห้ามเอาไปใช้กับตารางประเภท InnoDB โดยเด็ดขาดนะครับ
มิเช่นนั้น database server อาจน็อคเอาได้ง่ายๆ

เคยอ่านจากบล็อกต่างประเทศเหมือนกัน เห็นว่าต้องใส่ condition ลงไปด้วย
ถ้าใส่เป็น SELECT COUNT(*) FROM TABLE ก็ถึงกับอืดไปเลย

icez

สำหรับ innodb (หรือ engine อื่นก็ได้) เค้าให้ใช้แบบนี้ครับ
เร็วสุด ประหยัด resource มากที่สุด


$sql = mysql_query("SHOW TABLE STATUS LIKE 'ชื่อตาราง'");
$row = mysql_fetch_assoc($sql);
$numrows = $row['Rows'];


สำหรับ innodb จะได้เป็นค่าประมาณจำนวนแถวมา ไม่ใกล้เคียงเท่าไหร่หรอกครับ แต่ก็พอไหว
ดีกว่า query SELECT COUNT(*) เยอะ
[direct=http://www.thzhost.com/]THZHost[/direct] SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ

pugkung

mysql_fetch_assoc($sql);
กับ
mysql_fetch_array($sql);

ต่างกันไงครับ และข้อดีข้อเสียของทั้งสองตัวนี้

ตอนนี้ผมใช้แต่ mysql_fetch_array($sql);

แบบว่าอยากพัฒนาตัวเองหน่อยครับ รู้สึกว่า เป็น โง่ ๆ ยังไงไม่รู้ช่วงนี้   :P