Site icon บริษัท โค๊ดบี จำกัด

สอน codeigniter วิธีย้ายไฟล์จาก host เดิม ไป host ใหม่

php-codeigniter-framework

php-codeigniter-framework

<h4>สอน codeigniter วิธีย้ายไฟล์จาก host เดิม ไปอยู่ host ใหม่ ด้วย codeigniter<&sol;h4>&NewLine;<p><strong>สอน codeigniter วิธีย้ายไฟล์จาก host เดิม ไปอยู่ host ใหม่<&sol;strong><br &sol;>&NewLine;ท่านเคยประสบปัญหาเหล่านี้ไช่ไหมครับ เปลี่ยนโฮสติ้งทีหนึ่ง ต้องใช้โปรแกรม FTP ดาวน์โหลดไฟล์ลงมาไว้<br &sol;>&NewLine;ในเครื่องก่อน ดาวน์โหลดเสร็จ ต้องอัพไฟล์ขึ้นไปที่โฮสใหม่อีก ปัญหาเหล่านั้นจะหมดไปถ้าท่านใช้ CI<br &sol;>&NewLine;<&excl;--more--><&sol;p>&NewLine;<p>ใน CI Framework มี Library ที่ชื่อว่า FTP ที่ทำให้เราสามารถอัพโหลดไฟล์ขึ้นไปยังโฮสติ้งที่เราใช้บริการอยู่<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " title&equals;"FTP Library in CI" >&dollar;this-&gt&semi;load-&gt&semi;library&lpar;'ftp'&rpar;&semi;<&sol;pre>&NewLine;<p><&sol;br><br &sol;>&NewLine;<&sol;br> <&sol;p>&NewLine;<h4>วิธีใช้งาน<&sol;h4>&NewLine;<p>การใช้งาน ftp ใน codeigniter ก็ง่ายแสนง่ายครับ เพียงแค่เรามี ftp account ก็สามารถใช้งานได้เลย<br &sol;>&NewLine;ตัวอย่างการใช้งาน เริ่มต้นเลยให้โหลด ftp library เข้ามาใช้งานใน Controller ที่เราต้องการ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >&lt&semi;&quest;php &NewLine;class Ftp&lowbar;upload extends CI&lowbar;Controller &NewLine;&lbrace; &NewLine; function &lowbar;&lowbar;construct&lpar;&rpar;&lbrace; &NewLine; parent&colon;&colon;&lowbar;&lowbar;construct&lpar;&rpar;&semi; &NewLine;&Tab;&Tab;&dollar;this-&gt&semi;load-&gt&semi;library&lpar;'ftp'&rpar;&semi; &NewLine; &rcub;<&sol;pre>&NewLine;<p>จากนั้นก็ตั้งค่า ftp account คือ IP&comma; username&comma; password และ port ให้กับตัวไลบรารี<br &sol;>&NewLine;ใช้เมธอด connect ทดสอบว่าสามารถเชื่อมต่อไปยัง server ได้หรือไม่<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >&lt&semi;&quest;php &NewLine;class Ftp&lowbar;upload extends CI&lowbar;Controller &NewLine;&lbrace; &NewLine; function &lowbar;&lowbar;construct&lpar;&rpar;&lbrace; &NewLine; parent&colon;&colon;&lowbar;&lowbar;construct&lpar;&rpar;&semi; &NewLine;&Tab;&Tab;&dollar;this-&gt&semi;load-&gt&semi;library&lpar;'ftp'&rpar;&semi; &NewLine; &rcub; &NewLine;&Tab;public function index&lpar;&rpar; &NewLine;&Tab;&lbrace; &NewLine;&Tab;&Tab; &NewLine;&Tab;&Tab;&dollar;config&lbrack;'hostname'&rsqb; &equals; 'ใส่ไอพีนะ ไม่ไช่ localhost'&semi; &NewLine;&Tab;&Tab;&dollar;config&lbrack;'username'&rsqb; &equals; 'ใส่ ftp username'&semi; &NewLine;&Tab;&Tab;&dollar;config&lbrack;'password'&rsqb; &equals; 'ใส่ ftp password'&semi; &NewLine;&Tab;&Tab;&dollar;config&lbrack;'port'&rsqb; &equals; 21&semi; &sol;&sol; ใส่ port ปกติ ftp จะใช้พอร์ต 21 ตรวจสอบเองว่าไช่ไหม &NewLine;&Tab;&Tab;&dollar;config&lbrack;'debug'&rsqb;&Tab;&equals; TRUE&semi; &NewLine; &dollar;this->ftp->connect&lpar;&dollar;config&rpar;&semi; &sol;&sol; ลองเชื่อมต่อดู ได้ไหม<&sol;pre>&NewLine;<p>ทดสอบดึงรายชื่อไฟล์ใน public&lowbar;html มาดู อย่าลืมใส่เครื่องหมาย &sol; &lpar;ทับ หรือ slash&rpar;<br &sol;>&NewLine;ข้างหน้า public&lowbar;html directory นะ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >print&lowbar;r&lpar;&dollar;this-&gt&semi;ftp-&gt&semi;list&lowbar;files&lpar;'&sol;public&lowbar;html&sol;'&rpar;&rpar;&semi;<&sol;pre>&NewLine;<p>ทีนี้มาลองอัพโหลดไฟล์จากโฮสที่เราติดตั้ง CI ไปโฮสใหม่ของเรา จะใช้คำสั่งประมาณนี้<br &sol;>&NewLine;&&num;8211&semi; พารามิเตอร์ตัวแรกคือ path ของไฟล์บนโฮสเรา<br &sol;>&NewLine;&&num;8211&semi; พารามิเตอร์ตัวที่สองคือ path ของไฟล์ที่เราจะให้ไปอยู่บนโฮสใหม่ ต้องมี &sol;public&lowbar;html&sol; อยู่หน้าไฟล์<br &sol;>&NewLine;&&num;8211&semi; พารามิเตอร์ตัวที่สามคือ mode สำหรับการอัพโหลดมีให้เลือก คือ &&num;8216&semi;auto&&num;8217&semi;&comma;&&num;8217&semi;binary&&num;8217&semi;&comma;&&num;8217&semi;ascii&&num;8217&semi;<br &sol;>&NewLine; ซึ่งท่านสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับข้อแตกต่างระหว่าง <a href&equals;"http&colon;&sol;&sol;thaiopensource&period;org&sol;การ-transfer-file-แบบ-ascii-กับ-binary-ใน-filezilla-ต่างกั&sol;" target&equals;"&lowbar;blank">FTP แบบ ascii และ binary ได้ที่นี่<&sol;a><br &sol;>&NewLine;&&num;8211&semi; พารามิเตอร์ตัวที่สี่คือ กำหนด permission ของไฟล์บนโฮสใหม่<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >&dollar;this-&gt&semi;ftp-&gt&semi;upload&lpar;'ไฟล์บนโฮสเก่า'&comma; '&sol;public&lowbar;html&sol;ไฟล์ไปโฮสใหม่'&comma; 'ascii'&comma; 0775&rpar;&semi;<&sol;pre>&NewLine;<p><&sol;br><br &sol;>&NewLine;<&sol;br> <&sol;p>&NewLine;<h4>วิธีย้ายพร้อมกันหลายไฟล์<&sol;h4>&NewLine;<p>ถ้าต้องการย้ายพร้อมกันหลาย ๆ ไฟล์ ให้โหลด directory helper เข้ามาช่วย<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >&dollar;this-&gt&semi;load-&gt&semi;helper&lpar;'directory'&rpar;&semi;<&sol;pre>&NewLine;<p>จากนั้นใช้คำสั่ง directory&lowbar;map เพื่อลิสรายชื่อไฟล์ในโฟลเด้อทั้งหมดมา<br &sol;>&NewLine;คำสั่ง directory&lowbar;map จะรีเทิร์นค่า กลับมาเป็น array<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " > &NewLine;&dollar;list&lowbar;file &equals; directory&lowbar;map&lpar;'&period;&sol;uploads&sol;'&rpar;&semi; &sol;&sol; ดึงไฟล์ทั้งหมดที่อยู่ในโฟลเด้อ upload มาทั้งหมด &NewLine;<&sol;pre>&NewLine;<p>จากนั้นใช้คำสั่ง count เพื่อนับจำนวน array และใช้คำสั่ง for loop วนอัพโหลดทีละไฟล์<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " > &NewLine;&dollar;list&lowbar;file &equals; directory&lowbar;map&lpar;'&period;&sol;uploads&sol;'&rpar;&semi; &NewLine;for&lpar;&dollar;i&equals;0&semi;&dollar;i<count&lpar;&dollar;list&lowbar;file&rpar;&semi;&dollar;i&plus;&plus;&rpar;&lbrace; &NewLine;&Tab;&dollar;file &equals; 'uploads&sol;'&period;&dollar;list&lowbar;file&lbrack;&dollar;i&rsqb;&semi; &NewLine;&Tab;&dollar;this->ftp->upload&lpar;&dollar;file&comma; '&sol;public&lowbar;html&sol;'&period;&dollar;file&comma; 'ascii'&comma; 0775&rpar;&semi; &NewLine;&rcub; &NewLine; &NewLine;<&sol;pre>&NewLine;<p>แต่ถ้าวน loop ซะขนาดนี้ php script ต้องเกิด timeout เป็นแน่แท้<br &sol;>&NewLine;ให้ใช้คำสั่ง set&lowbar;time&lowbar;limit เพื่อกำหนดให้ php script ทำงานแบบ unlimit timeout<br &sol;>&NewLine;เพื่อรอให้อัพโหลดไฟล์ทั้งหมดให้เสร็จก่อน<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >ini&lowbar;set&lpar;'max&lowbar;execution&lowbar;time'&comma; 0&rpar;&semi; &NewLine;set&lowbar;time&lowbar;limit&lpar;0&rpar;&semi;<&sol;pre>&NewLine;<p>ในท้ายที่สุดแล้วเราจะได้ Controller คลาสสำหรับอัพโหลดไฟล์ผ่านคำสั่ง FTP หน้าตาประมาณนี้ครับ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >&lt&semi;&quest;php &NewLine;class Ftp&lowbar;upload extends CI&lowbar;Controller &NewLine;&lbrace; &NewLine; function &lowbar;&lowbar;construct&lpar;&rpar;&lbrace; &NewLine; parent&colon;&colon;&lowbar;&lowbar;construct&lpar;&rpar;&semi; &NewLine;&Tab;&Tab;&dollar;this-&gt&semi;load-&gt&semi;library&lpar;'ftp'&rpar;&semi; &NewLine;&Tab;&Tab;&dollar;this-&gt&semi;load-&gt&semi;helper&lpar;'directory'&rpar;&semi; &NewLine;&Tab;&Tab;ini&lowbar;set&lpar;'max&lowbar;execution&lowbar;time'&comma; 0&rpar;&semi; &NewLine;&Tab;&Tab;set&lowbar;time&lowbar;limit&lpar;0&rpar;&semi; &NewLine; &rcub; &NewLine;&Tab;public function index&lpar;&rpar; &NewLine;&Tab;&lbrace; &NewLine;&Tab;&Tab; &NewLine;&Tab;&Tab;&dollar;config&lbrack;'hostname'&rsqb; &equals; 'ใส่ไอพีนะ ไม่ไช่ localhost'&semi; &NewLine;&Tab;&Tab;&dollar;config&lbrack;'username'&rsqb; &equals; 'ใส่ ftp username'&semi; &NewLine;&Tab;&Tab;&dollar;config&lbrack;'password'&rsqb; &equals; 'ใส่ ftp password'&semi; &NewLine;&Tab;&Tab;&dollar;config&lbrack;'port'&rsqb; &equals; 21&semi; &sol;&sol; ใส่ port ปกติ ftp จะใช้พอร์ต 21 ตรวจสอบเองว่าไช่ไหม &NewLine;&Tab;&Tab;&dollar;config&lbrack;'debug'&rsqb;&Tab;&equals; TRUE&semi; &NewLine; &dollar;this-&gt&semi;ftp-&gt&semi;connect&lpar;&dollar;config&rpar;&semi; &sol;&sol; ลองเชื่อมต่อดู ได้ไหม &NewLine;&Tab;&Tab; &NewLine;&Tab;&Tab;&dollar;list&lowbar;file &equals; directory&lowbar;map&lpar;'&period;&sol;uploads&sol;'&rpar;&semi; &NewLine;&Tab;&Tab;for&lpar;&dollar;i&equals;0&semi;&dollar;i&lt&semi;count&lpar;&dollar;list&lowbar;file&rpar;&semi;&dollar;i&plus;&plus;&rpar;&lbrace; &NewLine;&Tab;&Tab;&Tab;&dollar;file &equals; 'uploads&sol;'&period;&dollar;list&lowbar;file&lbrack;&dollar;i&rsqb;&semi; &NewLine;&Tab;&Tab;&Tab;&dollar;this-&gt&semi;ftp-&gt&semi;upload&lpar;&dollar;file&comma; '&sol;public&lowbar;html&sol;'&period;&dollar;file&comma; 'ascii'&comma; 0775&rpar;&semi; &NewLine;&Tab;&Tab;&rcub; &NewLine;&Tab;&Tab; &NewLine;&Tab;&Tab;&dollar;this-&gt&semi;ftp-&gt&semi;close&lpar;&rpar;&semi; &NewLine;&Tab;&rcub; &NewLine;&rcub; &NewLine;&quest;&gt&semi;<&sol;pre>&NewLine;<p>ท่านนักพัฒนาทั้งหลายสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับการอัพโหลดไฟล์ FTP class<br &sol;>&NewLine;ของ Codeigniter Framework ได้ที่ <a href&equals;"https&colon;&sol;&sol;www&period;codeigniter&period;com&sol;userguide3&sol;libraries&sol;ftp&period;html" target&equals;"&lowbar;blank">codeigniter FTP<&sol;a><&sol;p>&NewLine;

Exit mobile version