คลังเก็บบล็อก

ย้ายฐานข้อมูล mysql ขนาดใหญ่


เวลาต้องย้าย server เว็บเก่าๆที่เจอปัญหาบ่อยๆคือไฟล์ sql ที่ export จาก mysql database มีขนาดใหญ่มากๆ import ผ่าน phpmyadmin ก็ไม่ได้ จะupload ผ่าน ftp แล้วใช้ big dump ช่วยไฟล์ก็ใหญ่เกินกว่าที่ทางเซิร์ฟเวอร์อนุญาตไว้ซะอีก เดิมใช้วิธี copy ที่ละช่วงๆเวลาจะคัดลอกก็ต้องดูว่าจบด้วยเครื่องหมาย ; ทำไปทำมาเจอว่าตัดออกมาแล้ว เผลอวางซ้ำสองครั้ง ลืม paste ก็มี
จนได้เจอกับโปรแกรม SQL Dump Splitter เวลาใช้

  1. ให้เลือก browse ไฟล์ sql ที่ export ออกมา
  2. เลือกขนาดไฟล์ย่อยที่จะแบ่งออกมา จะยอมให้ไม่เกินเท่าไหร่ ดูได้จาก upload_max_filesize, memory_limit และ post_max_size ใน function phpinfo()
  3. เลือกว่าจะเก็บไฟล์ผลลัพธ์ไว้ที่ไหน โดนมันจะสร้างไฟล์ไว้ใน folder SQLDumpSplitterResult อีกทีหนึ่ง
  4. กด Execute

โดยใน folder SQLDumpSplitterResult จะมีไฟล์ ชื่อไฟล์ต้นฉบับต่อด้วย_DataStructure.sql เก็บโครงสร้างของฐานข้อมูลเอาไว้ ทำให้เวลา import เราต้องอิมพอตไฟล์นี้ก่อนไฟล์อื่นๆ จะให้ phpMyAdmin หรือตัวอื่นๆที่โฮสต์เตรียมไว้ให้ก็ได้ ส่วนข้อมูลจะโดนแยกตามรูปแบบ ชื่อไฟล์ต้นฉบับต่อด้วย_ลำดับ.sql ให้นำเข้าไปในฐานข้อมูลมายเอสคิวเอลตามลำดับ

Advertisements

แก้ YII Assets ย้าย static cache folder


โดยปกติ yii จะเก็บไฟล์ static บางไฟล์ที่เป็น CSS, JavaScript ทั้งที่เป็น framework อย่าง jQuery หรือไฟล์ที่เกิดจากการใช้คำสั่ง Yii::app()->getClientScript()->registerScript(‘featured’ ,”…”); หรือ Yii::app()->clientScript->registerCoreScript(‘jquery’); ไว้ใน folder assets/ค่าสุ่ม บางครั้งเราแก้ไขไปแล้ว แต่ไฟล์พวกนี้ยัง cache ของเดิมอยู่เพราะว่า hash ไม่ได้ต่างจากเดิม หน้าเว็บจึงทำงานไม่ถูกต้องตามที่ตั้งใจไว้ วิธีแก้คือการที่จะต้องเข้าไปลบออกทั้งโฟลเดอร์ ซึ่งไม่สดวกนักเพราะว่าใน assets ยังมีไฟล์ที่เป็นดาต้าจริงๆ อยู่ด้วย ทางที่จึงควรแยกไฟล์ที่เป็น static cache พวกนี้ออกไปไว้ที่อื่นเพื่อความสดวกในการทดสอบและปลอดภัยของข้อมูล

สมมุติว่าสร้างโฟลเดอร์เก็บไฟล์ static cache ไว้ที่ D:/xampp/htdocs/yiiTest/assetsRuntime (user ต้องเข้าถึงได้จาก internet และต้องกำหนดให้ php มีสิทธิเขียน / ลบไฟล์ อย่างน้อย cmod ต้องเป็น 0755 ) แล้วไปที่ protected\config\ main.php เพิ่มบรรทัดตามตัวอย่าง

	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
	'name'=>'My Web Application',
…
	// application components
	'components'=>array(
		'assetManager'=>array(
			'basePath'=>'D:\xampp\htdocs\yiiTest\assetsRuntime',
			'baseUrl'=>'/yiiTest/assetsRuntime/'
		),
…

อาจจะลบโฟลเดอร์ static cache ใน assets เก่าออก ครั้งต่อไปที่เขียนไฟล์ จะเขียนลงที่ใหม่

%d bloggers like this: