การสร้างและรันโปรเจ็กต์ ThinkPHP 8 ใน ServBay
บทความนี้จะแนะนำวิธีใช้ ServBay ซึ่งเป็นสภาพแวดล้อมการพัฒนาเว็บบนเครื่องที่ทรงพลังในการสร้าง ตั้งค่า และรันโปรเจ็กต์ PHP ที่ใช้เฟรมเวิร์ค ThinkPHP 8 ได้อย่างรวดเร็ว ServBay มาพร้อมกับสภาพแวดล้อม PHP ที่ปรับแต่งไว้ล่วงหน้า เว็บเซิร์ฟเวอร์ (Caddy หรือ Nginx) และฐานข้อมูลหลากหลายชนิดเพื่อให้งานของคุณง่ายขึ้น
ThinkPHP คืออะไร
ThinkPHP คือเฟรมเวิร์คพัฒนา PHP แบบ opensource ที่มีต้นกำเนิดในประเทศจีน ซึ่งเน้นแนวทางวัตถุประสงค์ (object-oriented) พัฒนาได้เร็วและง่าย โดยออกแบบมาเพื่อให้เครื่องมือที่ครบครันสำหรับนักพัฒนาในการสร้างเว็บแอปพลิเคชันยุคใหม่ ด้วยความง่าย ฟังก์ชันครบ (เช่น ORM ที่ทรงพลัง, การจัดการ routing ที่ยืดหยุ่น, เทมเพลต engine ในตัว, การรองรับแคช ฯลฯ) และชุมชนที่สนับสนุนอย่างแข็งแกร่ง ทำให้ ThinkPHP ได้รับความนิยมในวงการนักพัฒนา PHP ของจีนเป็นอย่างมาก
คุณสมบัติเด่นและข้อดีของ ThinkPHP
- เรียบง่ายและมีประสิทธิภาพ: โครงสร้างเฟรมเวิร์คออกแบบให้สะอาดตา เข้าใจง่าย ดูแลรักษาง่าย จึงช่วยเพิ่มประสิทธิภาพการพัฒนา
- ฟังก์ชันครบถ้วน: มีโมดูลสำคัญที่ใช้บ่อยในการพัฒนาเว็บ เช่น MVC, ORM, เทมเพลต engine, การจัดการแคช, sessions, authentication, token แบบฟอร์ม ฯลฯ
- ORM ที่ทรงพลัง: รองรับการสื่อสารกับฐานข้อมูลในรูปแบบ object ได้อย่างง่ายดาย
- ระบบ routing ที่ยืดหยุ่น: กำหนด routing ได้หลายแบบ รองรับโครงสร้าง URL ที่หลากหลายและซับซ้อน
- ระบบ ecosystem ที่มั่งคั่ง: มีไลบรารีและปลั๊กอินเสริมจำนวนมาก พร้อมชุมชนที่คึกคัก
- อัปเดตต่อเนื่อง: ปรับปรุงเวอร์ชันอย่างสม่ำเสมอ ตอบรับกับการเปลี่ยนแปลงของภาษา PHP และเทรนด์การพัฒนาเว็บ
ThinkPHP เหมาะกับการพัฒนาเว็บทุกขนาด ตั้งแต่โปรเจ็กต์เล็ก ๆ ไปจนถึงระบบขนาด enterprise
ใช้ ServBay ในการติดตั้ง ThinkPHP 8
ServBay ให้สภาพแวดล้อมที่เหมาะสมสำหรับการพัฒนา ThinkPHP 8 โดยมี:
- ติดตั้ง PHP เวอร์ชันต่าง ๆ พร้อม extensions ที่ใช้ประจำ
- เว็บเซิร์ฟเวอร์ในตัว (Caddy หรือ Nginx) สามารถตั้งค่าเว็บไซต์ได้สะดวก
- ฐานข้อมูลไส้ในหลากชนิด เช่น MySQL, PostgreSQL, MongoDB, Redis, Memcached ฯลฯ
- Composer ตัวจัดการ dependencies แบบ built-in
คู่มือนี้จะใช้คุณสมบัติทั้งหมดนี้ในการสร้างโปรเจ็กต์ ThinkPHP 8 ของคุณแบบรวดเร็ว
เงื่อนไขและการเตรียมพร้อม
ก่อนเริ่มต้น กรุณาตรวจสอบให้แน่ใจว่าคุณได้ดำเนินการตามนี้:
- ติดตั้ง ServBay บน macOS หรือ Windows แล้ว ดาวน์โหลดและติดตั้ง ServBay
- รัน ServBay และเปิดใช้งาน PHP เวอร์ชันที่จำเป็น (ThinkPHP 8 รองรับ PHP 8.0 ขึ้นไป) พร้อมบริการฐานข้อมูลที่ต้องใช้ (เช่น MySQL, PostgreSQL, Redis, Memcached ฯลฯ) ตรวจสอบและเปิดบริการเหล่านี้ได้ที่แท็บ “แพ็คเกจซอฟต์แวร์” ใน ServBay
สร้างโปรเจ็กต์ ThinkPHP
ServBay แนะนำให้จัดเก็บไฟล์เว็บไซต์ทั้งหมดไว้ที่ไดเรกทอรี /Applications/ServBay/www เพื่อจัดการเว็บไซต์ต่าง ๆ ได้สะดวก
ตรวจสอบว่า Composer ติดตั้งเรียบร้อย
ServBay ได้ เตรียม Composer ไว้ล่วงหน้า แล้ว ปกติไม่จำเป็นต้องติดตั้งเพิ่ม ตรวจสอบเวอร์ชันโดยเปิด terminal ของ ServBay แล้วรัน
composer --versionใช้ Composer สร้างโปรเจ็กต์ ThinkPHP
เปิด Terminal ใน macOS แล้วรันคำสั่งนี้ใน root ของเว็บไซต์ ServBay:
bashcd /Applications/ServBay/www composer create-project topthink/think servbay-thinkphp-app1
2ผลลัพธ์คือจะได้โฟลเดอร์ใหม่ชื่อ
servbay-thinkphp-appใน/Applications/ServBay/wwwที่มีไฟล์ ThinkPHP 8 และ dependencies ต่าง ๆ ครบเข้าไดเรกทอรีโปรเจ็กต์
หลังสร้างโปรเจ็กต์แล้ว ให้เข้าไปยังไดเรกทอรีโปรเจ็กต์:
bashcd /Applications/ServBay/www/servbay-thinkphp-app1
ตั้งค่าเริ่มต้นโปรเจ็กต์
เมื่อสร้างโปรเจ็กต์เสร็จ จะต้องปรับแต่งการตั้งค่าบางอย่าง
ตั้งค่าการเชื่อมต่อฐานข้อมูล
การตั้งค่าฐานข้อมูลใน ThinkPHP ปกติอยู่ที่ไฟล์
config/database.phpปรับแต่งตามบริการฐานข้อมูลที่คุณเปิดผ่าน ServBayตัวอย่างการตั้งค่าใช้ MySQL ค่าเริ่มต้นของ ServBay:
php<?php // config/database.php return [ // ใช้งานการตั้งค่าการเชื่อมต่อฐานข้อมูลหลัก 'default' => env('database.driver', 'mysql'), // การตั้งค่าการเชื่อมต่อฐานข้อมูลต่าง ๆ 'connections' => [ 'mysql' => [ // ประเภทฐานข้อมูล 'type' => 'mysql', // ที่อยู่เซิร์ฟเวอร์ 'hostname' => env('database.hostname', '127.0.0.1'), // ชื่อฐานข้อมูล 'database' => env('database.database', 'servbay_thinkphp_app'), // แนะนำให้สร้างฐานข้อมูลแยกสำหรับแต่ละโปรเจ็กต์ // ชื่อผู้ใช้ 'username' => env('database.username', 'root'), // รหัสผ่าน 'password' => env('database.password', 'password'), // รหัสผ่านเริ่มต้นของ ServBay ใช้สำหรับพัฒนาเท่านั้น! // พอร์ต 'hostport' => env('database.hostport', '3306'), // ... การตั้งค่าอื่น ๆ ... ], // ... การตั้งค่าเชื่อมต่ออื่น ๆ ... ], ];1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27หมายเหตุสำคัญ:
- เปลี่ยนค่าของ
databaseเป็นชื่อฐานข้อมูลที่คุณสร้างไว้สำหรับโปรเจ็กต์นี้ (เช่น สร้างผ่าน phpMyAdmin หรือ Adminer ใน ServBay) - รหัสผ่านผู้ใช้
rootใน ServBay คือpasswordใช้สำหรับพัฒนาในเครื่องเท่านั้น ห้ามใช้ใน production! ในงานจริงควรใช้รหัสผ่านที่แข็งแรงและจำกัดสิทธิ์ผู้ใช้ - หากใช้ไฟล์
.envในการจัดการ environment variables ให้แน่ใจว่าค่าดังกกล่าวจะ override ค่าจากconfig/database.php
- เปลี่ยนค่าของ
ตั้งค่าเว็บเซิร์ฟเวอร์
ไฟล์เริ่มต้น (entry file) ของ ThinkPHP คือ public/index.php และใช้กฎ rewrite URL ในการจัดการ routing เนื่องจาก routing ของ ThinkPHP แตกต่างจาก static file หากตรงไปตรงมา เราจึงต้องใช้กฎ Rewrite ที่ ServBay เตรียมไว้
ในหน้าตั้งค่าเว็บไซต์ของ ServBay ให้เลือก Rewrite Rule เป็น ThinkPHP แล้วกดบันทึก
อ่านรายละเอียดวิธีตั้งค่าเว็บไซต์กับ ServBay เพิ่มเติมที่ เพิ่มเว็บไซต์แรกของคุณ
เพิ่มตัวอย่างโค้ด
เพื่อทดสอบว่าตั้งค่าเว็บไซต์สำเร็จและว่า routing/thinksPHP ทำงานถูกต้อง ให้เพิ่ม route และ controller ตัวอย่าง
เปิดไฟล์ /Applications/ServBay/www/servbay-thinkphp-app/route/app.php แล้วเพิ่มโค้ดนี้เพื่อสร้างเส้นทาง GET ง่าย ๆ
php
<?php
// route/app.php
use think\facade\Route;
// สร้าง route servbay เมื่อเข้า /servbay จะเรียกฟังก์ชันนี้
Route::get('servbay', function () {
return 'Hello ServBay!';
});
// ... เส้นทางอื่น ๆ ...1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
ทดสอบเข้าเว็บ
เมื่อทำตามขั้นตอนด้านบนแล้ว เปิด browser และเข้า URL ตามที่ตั้งไว้ เช่น
https://thinkphp.servbay.demo/servbay
หากตั้งค่าถูกต้อง จะเห็นข้อความ Hello ServBay! แสดงว่าเว็บเซิร์ฟเวอร์และ ThinkPHP 8 โปรเจ็กต์ของคุณใน ServBay พร้อมใช้งานสมบูรณ์สำหรับการพัฒนาต่อ
ตัวอย่าง NoSQL Database
ServBay มีฐานข้อมูล NoSQL หลายชนิด ติดตั้งให้เช่น Memcached และ Redis โดย ThinkPHP รองรับการใช้ cache driver เหล่านี้อย่างง่ายผ่าน abstraction ของ caching
ตัวอย่าง Memcached
ติดตั้ง Memcached extension
ในแพคเกจ PHP ของ ServBay มี Memcached extension ติดตั้งอยู่แล้ว ตรวจสอบว่าเปิด Memcached service ในแถบ “แพ็คเกจซอฟต์แวร์” ใน ServBay
ตั้งค่า Memcached cache
เปิดไฟล์
config/cache.phpและปรับแต่งให้ ThinkPHP ใช้ Memcachedphp<?php // config/cache.php return [ // cache driver หลัก 'default' => env('cache.driver', 'memcached'), // การตั้งค่าเชื่อมต่อ cache 'stores' => [ 'memcached' => [ // ประเภท cache 'type' => 'memcached', // ที่อยู่เซิร์ฟเวอร์ 'host' => '127.0.0.1', // ที่อยู่เริ่มต้น Memcached ของ ServBay 'port' => 11211, // พอร์ต Memcached เริ่มต้นของ ServBay 'persistent' => false, 'expire' => 0, 'timeout' => 0, 'prefix' => '', ], // ... cache อื่น ๆ ... ], ];1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23ใช้งาน Memcached cache ในโค้ด
ใน controller หรือ route callback ใช้ ThinkPHP
CacheFacadephp<?php use think\facade\Cache; use think\facade\Route; Route::get('/memcached-example', function () { // บันทึกค่า cache อายุ 600 วินาที Cache::set('my_memcached_key', 'This value is from Memcached!', 600); // ดึงค่า cache $value = Cache::get('my_memcached_key'); return 'Value from Memcached: ' . $value; });1
2
3
4
5
6
7
8
9
10
11
12
13ทดลองใช้ที่
https://thinkphp.servbay.demo/memcached-example
ตัวอย่าง Redis
ติดตั้ง Redis extension
ในแพคเกจ PHP ของ ServBay มี extension ของ Redis ติดตั้งให้อยู่แล้ว แค่เปิด Redis service ในแท็บ “แพ็คเกจซอฟต์แวร์” ของ ServBay
ตั้งค่า Redis cache
เปิดไฟล์
config/cache.phpและปรับแต่งให้ ThinkPHP ใช้ Redisphp<?php // config/cache.php return [ // cache driver หลัก 'default' => env('cache.driver', 'redis'), // การตั้งค่าเชื่อมต่อ cache 'stores' => [ 'redis' => [ // ประเภท cache 'type' => 'redis', // ที่อยู่เซิร์ฟเวอร์ 'host' => env('cache.host', '127.0.0.1'), // ที่อยู่เริ่มต้น Redis ของ ServBay // พอร์ต 'port' => env('cache.port', 6379), // พอร์ต Redis เริ่มต้นของ ServBay // รหัสผ่าน (ค่าเริ่มต้นไม่มีรหัส) 'password' => env('cache.password', ''), // Redis ของ ServBay ค่าเริ่มต้นไม่มีรหัสผ่าน 'select' => 0, 'timeout' => 0, 'expire' => 0, 'persistent' => false, 'prefix' => '', ], // ... cache อื่น ๆ ... ], ];1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27หมายเหตุ: ค่าเริ่มต้นของ Redis ใน ServBay ไม่มีรหัสผ่าน ถ้าคุณตั้งรหัสผ่านเองใน Redis ให้ใส่ในช่องนี้
ใช้งาน Redis cache ในโค้ด
ใช้ ThinkPHP
CacheFacade ใน controller หรือ route callbackphp<?php use think\facade\Cache; use think\facade\Route; Route::get('/redis-example', function () { // บันทึกค่า cache แบบถาวร (หรือกำหนดอายุด้วย argument ที่สาม) Cache::set('my_redis_key', 'Hello from Redis!'); // ดึงค่า cache $value = Cache::get('my_redis_key'); return 'Value from Redis: ' . $value; });1
2
3
4
5
6
7
8
9
10
11
12
13ทดลองใช้งานที่
https://thinkphp.servbay.demo/redis-example
ตัวอย่างฐานข้อมูลแบบ relational
ServBay มี MySQL และ PostgreSQL เป็นฐานข้อมูล relational หลัก โดย ThinkPHP สามารถใช้งานร่วมกับ ORM ได้ง่าย
ใช้เครื่องมือ migration ของ ThinkPHP
ในการพัฒนาใหญ่ ๆ จะนิยมใช้ migration tool ในควบคุมโครงสร้างฐานข้อมูล เป็นประโยชน์สำหรับการทำงานเป็นทีมและการจัดการเวอร์ชัน
ติดตั้ง migration tool
เข้าไปในโฟลเดอร์หลักโปรเจ็กต์แล้วใช้ Composer ติดตั้ง migration extension:
bashcd /Applications/ServBay/www/servbay-thinkphp-app composer require topthink/think-migration1
2สร้างไฟล์ migration
ใช้ CLI สร้างไฟล์ migration ใหม่ เช่น ใส่ชื่อสำหรับสร้างตาราง
users:bashphp think migrate:create CreateUserTable1จะได้ไฟล์ใหม่อยู่ใน
database/migrationsชื่อ include timestamp และชื่อที่ระบุ เช่น20231027100000_create_user_table.phpแก้ไขไฟล์ migration
เปิดไฟล์ migration ที่สร้างขึ้นแล้วแก้ไขเมธอด
up()ในการกำหนดโครงสร้างตารางusers:php<?php // database/migrations/YYYYMMDDHHMMSS_create_user_table.php use think\migration\Migrator; use think\migration\db\Column; class CreateUserTable extends Migrator { /** * Change Method. * * Write your reversible migrations using this method. * * More information on writing migrations is available here: * http://docs.phinx.org/en/latest/migrations.html#the-change-method * * The following commands can be used in this method and Phinx will * automatically reverse them when rolling back: * * createTable * renameTable * addColumn * addCustomColumn * renameColumn * addIndex * addForeignKey * createDatabase * renameDatabase * dropTable * dropColumn * dropIndex * dropForeignKey */ public function change() { // ใช้คำสั่ง createTable สร้างตาราง $table = $this->table('users'); $table->addColumn('name', 'string', ['limit' => 50, 'comment' => 'ชื่อผู้ใช้']) ->addColumn('email', 'string', ['limit' => 100, 'comment' => 'อีเมล']) ->addIndex(['email'], ['unique' => true]) // กำหนด email ต้องไม่ซ้ำ ->addTimestamps() // เพิ่มฟิลด์เวลากำกับ ->create(); // สร้างตาราง } // หากไม่ใช้เมธอด change สามารถกำหนด up() และ down() ได้โดยตรง /* public function up() { $table = $this->table('users'); $table->addColumn('name', 'string', ['limit' => 50, 'comment' => 'ชื่อผู้ใช้']) ->addColumn('email', 'string', ['limit' => 100, 'comment' => 'อีเมล']) ->addIndex(['email'], ['unique' => true]) ->addTimestamps() ->create(); } public function down() { $this->dropTable('users'); } */ }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62รัน migration สร้างโครงสร้างฐานข้อมูล
ใช้ terminal ใน ServBay รันคำสั่งสร้างตาราง
usersระวังว่าต้องอยู่ในโฟลเดอร์โปรเจ็กต์:bashphp think migrate:run1หากสำเร็จ คุณจะเห็นตาราง
usersในฐานข้อมูล
ตัวอย่าง MySQL
สมมติคุณเปิดใช้งาน MySQL ใน ServBay และตั้งค่าการเชื่อมต่อใน config/database.php เรียบร้อยแล้ว
ตั้งค่า MySQL Connection
ตรวจสอบในหัวข้อ "ตั้งค่าเริ่มต้นโปรเจ็กต์" ก่อนเพื่อให้แน่ใจว่า
config/database.phpกำหนดข้อมูลครบถ้วนบันทึกข้อมูลผู้ใช้ผ่านโค้ด
ใช้ ThinkPHP
DbFacade หรือ ORM ในการเพิ่มข้อมูลตัวอย่าง:php<?php use think\facade\Db; use think\facade\Route; Route::get('/mysql-add-user', function () { try { Db::table('users')->insert([ 'name' => 'ServBay Demo User', 'email' => 'demo@servbay.demo', // อีเมลตัวอย่างของแบรนด์ 'created_at' => date('Y-m-d H:i:s'), // กำหนด timestamp ด้วยตนเองถ้าไม่ได้ auto 'updated_at' => date('Y-m-d H:i:s'), ]); return 'User added successfully!'; } catch (\Exception $e) { return 'Error adding user: ' . $e->getMessage(); } });1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17ทดสอบได้ที่
https://thinkphp.servbay.demo/mysql-add-userอ่านข้อมูลผู้ใช้จากฐานข้อมูล
ใช้
DbFacade หรือ ORM ในการ query ข้อมูล:php<?php use think\facade\Db; use think\facade\Route; Route::get('/mysql-users', function () { $users = Db::table('users')->select(); // ดึงข้อมูลผู้ใช้ทั้งหมด return json($users); // แสดงแบบ JSON });1
2
3
4
5
6
7
8ทดสอบที่
https://thinkphp.servbay.demo/mysql-users
ตัวอย่าง PostgreSQL
สมมติเปิดใช้งาน PostgreSQL และกำหนดการเชื่อมต่อใน config/database.php แล้ว
ตั้งค่า PostgreSQL Connection
ในไฟล์
config/database.phpตรวจสอบให้มี config ดังนี้ (หรือปรับแต่งตามที่ใช้งานจริง):php<?php // config/database.php (บางส่วน) return [ // ... การตั้งค่าอื่น ๆ ... 'connections' => [ // ... ตั้งค่า MySQL ... 'pgsql' => [ // ประเภทฐานข้อมูล 'type' => 'pgsql', // ที่อยู่เซิร์ฟเวอร์ 'hostname' => env('database.hostname', '127.0.0.1'), // ชื่อฐานข้อมูล 'database' => env('database.database', 'servbay_thinkphp_app'), // แนะนำให้สร้างฐานข้อมูลแยกสำหรับโปรเจ็กต์แต่ละตัว // ชื่อผู้ใช้ 'username' => env('database.username', 'root'), // รหัสผ่าน 'password' => env('database.password', 'password'), // รหัสผ่านเริ่มต้นของ ServBay พัฒนาเท่านั้น! // พอร์ต 'hostport' => env('database.hostport', '5432'), // พอร์ตปกติของ PostgreSQL // ... การตั้งค่าอื่น ๆ ... ], // ... การเชื่อมต่อฐานข้อมูลอื่น ๆ ... ], ];1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27หมายเหตุสำคัญ:
- แบบเดียวกับ MySQL ควรสร้างฐานข้อมูล PostgreSQL แยกสำหรับแต่ละโปรเจ็กต์และระบุในช่อง config
- รหัสผ่านผู้ใช้
rootใน ServBay คือpasswordใช้เฉพาะในพัฒนาในเครื่อง
บันทึกข้อมูลผู้ใช้ผ่านโค้ด
ใช้ ThinkPHP
DbFacade หรือ ORM ในการ insert ข้อมูล โดยระบุใช้ connectionpgsql:php<?php use think\facade\Db; use think\facade\Route; Route::get('/pgsql-add-user', function () { try { Db::connect('pgsql')->table('users')->insert([ // เลือกใช้ pgsql connection 'name' => 'ServBay PgSQL User', 'email' => 'pgsql-demo@servbay.demo', // อีเมลตัวอย่างแบรนด์ // timestamp ของ PostgreSQL อาจต้องระบุเอง ขึ้นกับการตั้งค่า migration/ThinkPHP 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s'), ]); return 'PostgreSQL User added successfully!'; } catch (\Exception $e) { return 'Error adding PostgreSQL user: ' . $e->getMessage(); } });1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18ทดสอบที่
https://thinkphp.servbay.demo/pgsql-add-userอ่านข้อมูลผู้ใช้จากฐานข้อมูล
ใช้
DbFacade หรือ ORM ในการ query ข้อมูลผู้ใช้โดยระบุ connectionpgsql:php<?php use think\facade\Db; use think\facade\Route; Route::get('/pgsql-users', function () { $users = Db::connect('pgsql')->table('users')->select(); // เลือกใช้ pgsql return json($users); // แสดงผลแบบ JSON });1
2
3
4
5
6
7
8ทดสอบที่
https://thinkphp.servbay.demo/pgsql-users
สรุป
เมื่อปฏิบัติตามขั้นตอนทั้งหมดนี้ คุณจะสามารถใช้ ServBay ในการสร้าง ตั้งค่า และรันโปรเจ็กต์ ThinkPHP 8 ได้ครบสมบูรณ์ คุณจะได้เรียนรู้วิธีใช้ Composer ที่มีในตัวของ ServBay สร้างโปรเจ็กต์, ตั้งค่าเว็บเซิร์ฟเวอร์ Caddy ให้รองรับ routing ของ ThinkPHP และเชื่อมต่อกับฐานข้อมูลต่าง ๆ เช่น MySQL, PostgreSQL, Memcached และ Redis
ServBay ช่วยลดความยุ่งยากในการติดตั้งสภาพแวดล้อมสำหรับเฟรมเวิร์ค PHP อย่าง ThinkPHP ให้คุณเน้นการพัฒนา business logic ได้เต็มที่ พร้อมใช้งานทั้งแพ็คเกจซอฟต์แวร์และฟีเจอร์ต่าง ๆ ที่ ServBay มอบให้
