วิธี Restart Resource ผ่าน txAdmin FiveM โดยไม่ต้อง Restart ทั้ง Server
การ Restart Resource ผ่าน txAdmin เป็นวิธีที่ช่วยให้ผู้ดูแล FiveM Server รีโหลด Script, Map, Job, UI หรือระบบบางส่วนได้โดยไม่ต้อง Restart FXServer ทั้งเครื่องและไม่จำเป็นต้องทำให้ผู้เล่นทั้งหมดหลุดออกจาก Server
FiveM มีคำสั่งจัดการ Resource โดยตรง ได้แก่
start
stop
ensure
restart
refresh
และ txAdmin รองรับการ Start/Stop Resource รวมถึงการใช้ Console Commands โดย Admin ที่มี Permission เหมาะสม
ถ้าต้องการ Restart Resource ชื่อ my_resource สามารถใช้คำสั่ง
restart my_resource
ใน Server Console ได้
แต่ก่อน Restart Resource บน Production Server ต้องเข้าใจก่อนว่า Resource นั้นเป็นระบบทั่วไปหรือเป็น Core Resource เพราะการ Restart Framework, Inventory, Database Library หรือ Resource ที่มี State สำคัญขณะผู้เล่นออนไลน์อาจทำให้ระบบผิดปกติได้
① FiveM Resource คืออะไร
Resource คือชุดไฟล์ที่ FiveM Server สามารถ
Start
Stop
Restart
แยกออกจาก Server ทั้งระบบได้
Resource อาจประกอบด้วย
Client Scripts
Server Scripts
NUI
Config
Maps
Vehicles
Streaming Assets
และโดยทั่วไป Resource จะอยู่ใน Folder
resources/
ของ Server Data
Cfx.re ระบุว่า Resource สามารถ Start, Stop และ Restart ได้ระหว่างที่ Server ทำงานอยู่
② Restart Resource คืออะไร
Restart Resource หมายถึง
Stop Resource
↓
Start Resource ใหม่
โดยไม่ได้ Restart FXServer ทั้ง Process
ตัวอย่าง
restart policejob
จะ Restart Resource policejob
ขณะที่ Resource อื่นยังทำงานต่อ
③ Restart Resource ต่างจาก Restart Server อย่างไร
Restart Resource
กระทบเฉพาะ Resource ที่เลือกและ Dependency ที่เกี่ยวข้องตามพฤติกรรมของระบบ
Restart Server
กระทบ
FXServer
+
Resources ทั้งหมด
+
Players ทั้งหมด
ผู้เล่นจะหลุดและต้องเชื่อมต่อใหม่
ดังนั้นถ้าปัญหาอยู่ที่ Script ตัวเดียว การ Restart Resource มักเหมาะกว่าการ Restart ทั้ง Server
④ txAdmin Restart Resource ได้ไหม
ได้
txAdmin มีความสามารถจัดการ Server Resources และ Cfx.re ระบุว่า Feature หลักของ txAdmin รวมถึงการ Start/Stop/Restart Server Instance หรือ Resources
Admin สามารถจัดการผ่านหน้า txAdmin หรือผ่าน Server Console ตาม Permission ที่ได้รับ
⑤ ต้องมี Permission อะไร
Permission สำคัญสำหรับการจัดการ Resources คือ
commands.resources
Cfx.re ระบุ Permission นี้สำหรับ
Start/Stop Resources
ส่วนถ้าจะพิมพ์ Console Commands โดยตรง ต้องมี
console.write
ด้วยตามรูปแบบการจัดการที่ใช้
⑥ console.view กับ console.write ต่างกันอย่างไร
console.view
ดู Console
console.write
ส่ง Command เข้า Console
ดังนั้น Admin ที่เห็น Console ได้แต่พิมพ์
restart resource_name
ไม่ได้ อาจมีเพียง console.view
ให้ตรวจ Permission ก่อนคิดว่า txAdmin เสีย
⑦ เข้า txAdmin ก่อน Restart Resource
ถ้าเปิดจากเครื่อง Server เดียวกัน ใช้
http://localhost:40120
ตามค่า Default ของ txAdmin
จากนั้น Login ด้วย Admin Account ที่มี Permission เหมาะสม
ไม่ควรใช้ Account Root ร่วมกันทั้งทีมเพียงเพื่อ Restart Script
⑧ วิธี Restart Resource ผ่าน txAdmin Console
เข้า
Live Console
แล้วพิมพ์
restart RESOURCE_NAME
ตัวอย่าง
restart policejob
จากนั้นกด Enter
Cfx.re ระบุว่า restart [resourceName] จะ Restart Resource หาก Resource นั้นกำลังทำงานอยู่
⑨ ตัวอย่าง Restart Resource
สมมุติ Resource ชื่อ
my_garage
ใช้
restart my_garage
Console ควรแสดงข้อมูลเกี่ยวกับการ Stop และ Start Resource
จากนั้นตรวจว่ามี Error ใหม่หรือไม่
⑩ ensure ต่างจาก restart อย่างไร
คำสั่ง
ensure resource_name
มีพฤติกรรมว่า
ถ้า Resource กำลัง Running → Restart
ถ้า Resource หยุดอยู่ → Start
ส่วน
restart resource_name
จะ Restart Resource หาก Resource นั้นกำลัง Started อยู่
Cfx.re อธิบายความแตกต่างนี้ไว้ใน Server Commands โดยตรง
⑪ ใช้ ensure หรือ restart ดีกว่า
ถ้าต้องการแน่ใจว่า Resource ต้อง Running หลังคำสั่ง ใช้
ensure resource_name
สะดวกกว่าในหลายกรณี
แต่ถ้าต้องการสั่ง Restart Resource ที่รู้ว่ากำลังเปิดอยู่ ใช้
restart resource_name
จะสื่อ Intent ชัดกว่า
⑫ start ใช้ทำอะไร
คำสั่ง
start resource_name
ใช้ Start Resource ที่หยุดอยู่
ตัวอย่าง
start my_garage
ถ้า Resource Running อยู่แล้ว ไม่จำเป็นต้องใช้ Start ซ้ำเพื่อหวังให้ Reload
ให้ใช้ restart หรือ ensure ตามกรณีแทน
⑬ stop ใช้ทำอะไร
คำสั่ง
stop resource_name
ใช้หยุด Resource
ตัวอย่าง
stop my_garage
เหมาะเมื่อต้องการปิด Script ชั่วคราวเพื่อ Debug
แต่ Production Server ต้องคิดถึง Player State ก่อน Stop ระบบสำคัญ
⑭ refresh คืออะไร
หากเพิ่งเพิ่ม Resource Folder ใหม่ขณะที่ Server กำลัง Running สามารถใช้
refresh
เพื่อให้ FXServer Scan resources/ ใหม่และโหลด Resource Manifest ที่เพิ่มมา
จากนั้นจึงใช้
ensure new_resource
หรือ
start new_resource
เพื่อเปิด Resource ใหม่ได้
⑮ เพิ่ม Resource ใหม่ต้อง Restart Server ไหม
ไม่จำเป็นเสมอไป
กรณี Resource ปกติสามารถใช้
refresh
ensure resource_name
โดยไม่ต้อง Restart FXServer ทั้ง Server
นี่เป็นหนึ่งในข้อดีของ Resource Architecture ของ FiveM
⑯ Resource Name ต้องพิมพ์ตรงไหม
ต้องใช้ชื่อ Resource ที่ FXServer รู้จัก
ตัวอย่าง Folder
resources/[jobs]/policejob
ชื่อ Resource คือ
policejob
ดังนั้นใช้
restart policejob
ไม่ใช่ Full Path
⑰ Folder แบบ [category] คืออะไร
FiveM รองรับ Category Folder เช่น
resources/
└── [jobs]/
├── policejob/
├── ambulance/
└── mechanic/
Cfx.re ระบุว่าสามารถ Start Category ได้ด้วยชื่อ Folder ในวงเล็บได้เช่นกัน
แต่ Production Server ควรระวังการ Restart Resource หลายตัวพร้อมกัน
⑱ Restart Category ได้ไหม
Server Commands รองรับ Category Names กับ Resource Commands เช่น restart
ดังนั้นใน Environment ที่จัด Folder เป็น Category สามารถจัดการเป็นกลุ่มได้ตาม Resource Structure
อย่างไรก็ตาม อย่า Restart Framework Group ทั้งชุดกลางเมืองโดยไม่ทดสอบ
⑲ Restart Resource แล้ว Player หลุดไหม
โดยทั่วไปการ Restart Resource ไม่ได้ Restart FXServer จึงไม่ทำให้ Player ทุกคน Disconnect แบบ Restart Server
แต่ Resource ที่ Restart อาจมีผลต่อ Player เช่น
UI หาย
Job State Reset
Vehicle System เปลี่ยน
Inventory Refresh
Script Event หยุด
Entity ถูกสร้างใหม่
ขึ้นอยู่กับ Code ของ Resource
⑳ Restart Resource แล้วข้อมูล Player หายไหม
ไม่ควรสรุปว่าไม่หายทุกกรณี
ขึ้นอยู่กับ Resource
หาก Resource เก็บ State ไว้เฉพาะ Memory เช่น
Current Mission
Temporary Inventory State
Active Job State
Cached Player Data
Restart สามารถทำให้ State เหล่านั้นหายได้
จึงต้องอ่าน Documentation ของ Resource ก่อน Restart Production
㉑ Resource ที่ใช้ Database Restart ได้ไหม
ได้ทางเทคนิค แต่ต้องดูว่า Resource
Save Data ก่อน Stop หรือไม่
Reload Cache อย่างไร
เชื่อม Database ใหม่หรือไม่
มี Active Transactions หรือไม่
Resource ที่เกี่ยวกับ Economy ควร Restart ในช่วงที่ควบคุมได้
㉒ Inventory ควร Restart กลางเมืองไหม
ควรหลีกเลี่ยงถ้าไม่แน่ใจ
Inventory มักเกี่ยวข้องกับ
Player Items
Storage
Shops
Drops
Database
UI
การ Restart ตอน Player เปิด Inventory หรือกำลังทำ Transaction อาจสร้าง State ที่ไม่คาดคิด
Maintenance Window ปลอดภัยกว่า
㉓ Framework Core Restart ได้ไหม
Resource เช่น Core Framework เป็น Dependency ของ Resources จำนวนมาก
ตัวอย่างแนวคิด
Framework Core
↓
Jobs
↓
Inventory
↓
Garage
↓
Phone
หาก Restart Core Resource เพียงตัวเดียว Resources ที่พึ่งพามันอาจไม่ Reinitialize อย่างถูกต้อง
กรณีนี้ Restart Server ทั้งระบบอาจเหมาะสมกว่า
㉔ Database Library Restart ได้ไหม
ต้องระวังมาก
Resource ที่ทำหน้าที่เป็น Database Adapter หรือ Library อาจถูก Resources จำนวนมากใช้งาน
หาก Restart กลาง Production สามารถกระทบ Query และ Connection ของระบบอื่น
ควรตรวจ Dependency ก่อนทุกครั้ง
㉕ Voice Resource Restart ได้ไหม
ทำได้ในหลายระบบ แต่ผู้เล่นอาจพบ
เสียงหายชั่วคราว
Channel Reset
Radio Reset
Voice State Reload
หลัง Restart ควรให้ Staff ทดสอบ Voice จริง
㉖ Map Resource Restart ได้ไหม
Resource ที่ Stream Map/MLO สามารถ Restart ได้ แต่ Client ที่อยู่ในพื้นที่อาจเห็น
Object หาย
Map Reload
Collision เปลี่ยน
Player ตก
Interior หายชั่วคราว
จึงควรให้ผู้เล่นออกจากพื้นที่ก่อน Restart Map ขนาดใหญ่
㉗ Vehicle Resource Restart ได้ไหม
ถ้าเป็น Resource ที่ Stream Vehicle Models การ Restart อาจส่งผลต่อ Entities ที่ Spawn อยู่
ไม่ควร Restart Pack รถขนาดใหญ่ระหว่างมี Player ใช้งานโดยไม่ทดสอบ
สำหรับ Development Serverทำได้สะดวกกว่า Production
㉘ HUD Resource Restart ได้ไหม
HUD หรือ UI มัก Restart ได้ง่ายกว่า Core System
ตัวอย่าง
restart my_hud
หลัง Restart ให้ตรวจ
HUD กลับมาหรือไม่
NUI โหลดใหม่หรือไม่
Player Data ถูกส่งกลับไป UI หรือไม่
บาง HUD ต้อง Trigger Player Loaded Event ใหม่
㉙ Script แก้ไฟล์แล้ว Restart ได้เลยไหม
สำหรับ Server/Client Scripts หลายประเภทสามารถ Save Code แล้ว
restart resource_name
เพื่อ Reload Resource ได้
เหมาะมากกับ Development
แต่ถ้าเปลี่ยน Resource Manifest หรือเพิ่ม Resource ใหม่ อาจต้องใช้ refresh ตามกรณี
㉚ fxmanifest.lua เปลี่ยนแล้วทำอย่างไร
ถ้าแก้ Resource เดิมที่ FXServer รู้จักอยู่แล้ว ลอง Restart Resource ได้
แต่ถ้าเพิ่ม Resource Folder ใหม่ ให้ใช้
refresh
ก่อน
FiveM จะ Rescan Resource Manifests และทำให้ Resource ใหม่พร้อม Start
㉛ onResourceStop คืออะไร
FiveM มี Server Event
onResourceStop
ที่ถูก Trigger เมื่อ Resource กำลังหยุด
Developer สามารถใช้ Event นี้จัดการ Cleanup ก่อน Resource Stop ได้
ตัวอย่าง Concept
Resource Stop
↓
Cleanup
↓
Resource Start ใหม่
㉜ onResourceStart คืออะไร
หลัง Resource Start จะมี Event
onResourceStart
ให้ Resource สามารถทำ Initial Setup เมื่อเริ่มทำงานได้
เช่น
Initialize Data
Register Systems
Load Config
Print Status
㉝ onResourceStarting คืออะไร
FiveM ยังมี
onResourceStarting
ซึ่งเกิดก่อน Resource Start และสามารถถูก Cancel เพื่อป้องกัน Resource จากการ Start ได้
ถ้า Restart แล้ว Resource ไม่ Start ควรตรวจ Event และ Code ที่เกี่ยวข้องด้วย
㉞ Restart แล้วขึ้น Couldn't find resource
แสดงว่า FXServer หา Resource ไม่เจอ
ตรวจ
Folder Name
Resource Path
resources/Category Folder
Manifest
พิมพ์ชื่อผิด
หากเพิ่งเพิ่มใหม่ ให้ลอง
refresh
ก่อน
㉟ Restart แล้ว Resource Failed to Start
ดู Console หา Error เช่น
Missing
fxmanifest.luaSyntax Error
Missing Dependency
Artifact Build ต่ำเกินไป
Config Error
Database Error
อย่า Restart ซ้ำหลายสิบครั้งโดยไม่อ่าน Error
㊱ Dependency คืออะไร
Resource หนึ่งสามารถพึ่ง Resource อื่น
ตัวอย่าง
garage
↓
ต้องใช้ framework
↓
ต้องใช้ database library
ถ้า Restart Dependency ผิดลำดับ Resource ด้านบนอาจทำงานไม่ได้
จึงควรรู้ Dependency Tree ของ Server
㊲ Restart Dependency ต้อง Restart Resource ลูกด้วยไหม
ขึ้นอยู่กับการออกแบบ Resource
บาง Resource สามารถ Reconnect กับ Dependency ได้เอง
บาง Resource ต้อง Restart ตาม
ตัวอย่างแนวคิด
restart database_library
↓
restart framework
↓
restart dependent_resources
แต่สำหรับระบบ Core ใหญ่ ๆ การ Restart Server อาจสะอาดกว่า
㊳ ensure ใน server.cfg คืออะไร
ใน server.cfg มักใช้
ensure resource_name
เพื่อให้ Resource ถูก Start ตอน Server Startup
ถ้า Resource Running อยู่แล้ว ensure สามารถ Restart Resource ได้ตามพฤติกรรม Server Command
㊴ restart ใน server.cfg ควรใช้ไหม
สำหรับ Startup Configuration ปกติควรใช้
ensure
มากกว่า เพราะเป้าหมายคือทำให้ Resource Running หลัง Server Start
restart เหมาะกับการควบคุม Resource ที่กำลังทำงานอยู่ใน Console มากกว่า
㊵ Restart Resource ผ่าน Console ปลอดภัยไหม
ปลอดภัยในแง่ที่เป็น Command ทางการของ FXServer
แต่ผลต่อ Game State ขึ้นอยู่กับ Resource ที่ Restart
จึงต้องแยก
Command ปลอดภัย
≠
Resource State ปลอดภัยทุกกรณี
ก่อนใช้บน Production ต้องรู้ Resource Behavior
㊶ ต้องประกาศให้ Player รู้ไหม
ถ้า Restart Resource ที่ Player ใช้อยู่ ควรแจ้ง
ตัวอย่าง
กำลัง Restart ระบบ Garage
กรุณางดนำรถเข้า-ออกชั่วคราว
ช่วยลด Transaction ที่เกิดขึ้นระหว่าง Restart
ไม่จำเป็นต้องประกาศทุกครั้งสำหรับ Resource Backend เล็ก ๆ ที่ไม่กระทบ Player แต่ต้องใช้ดุลยพินิจ
㊷ ควร Restart ตอนผู้เล่นน้อยไหม
สำหรับ Resource สำคัญควรทำในช่วง Player น้อย หรือ Maintenance Window
โดยเฉพาะ
Framework
Inventory
Garage
Housing
Banking
Database Resources
ลดผลกระทบและ Debug ง่ายกว่า
㊸ Restart แล้วต้องตรวจ Console ไหม
ต้อง
หลังใช้
restart resource_name
ให้ดู Console ว่ามี
Started
Error
Warning
Dependency Failure
Database Failure
หรือไม่
อย่าดูเพียงว่า Command ถูกส่งสำเร็จ
㊹ ตรวจว่า Resource Started แล้วอย่างไร
Console จะมีข้อมูล Startup ของ Resource และ FiveM มี Event onResourceStart เมื่อ Resource เริ่มทำงาน
จากนั้นควรทดสอบ Feature จริงด้วย
เช่น Restart Garage แล้วลอง
เปิด Garage
Spawn Vehicle
Store Vehicle
㊺ Restart Resource แล้ว CPU สูง
หลัง Restart Resource บางตัวอาจทำ Initialization เช่น
Load Data
Scan Entities
Query Database
Build Cache
ทำให้ CPU เพิ่มชั่วคราวได้
ถ้าสูงต่อเนื่องให้ตรวจ Script Performance และ Console
㊻ Restart Resource แล้ว Error Spam
ถ้า Error เริ่มทันทีหลัง Restart ให้หยุดและอ่าน Error แรก
อาจเป็น
Missing Dependency
Nil Value
Database Not Ready
Config Missing
Export Not Found
Error Spam หลายร้อยบรรทัดมักเป็นผลต่อเนื่องจาก Error หลักข้อแรก
㊼ เมื่อไรควร Restart Server แทน Resource
พิจารณา Restart Server ถ้า
เปลี่ยน Artifact
Update Core Framework ใหญ่
Update Resources จำนวนมาก
Dependency Tree ซับซ้อน
เปลี่ยน Server Config หลัก
Resource State เสียหลายระบบ
Restart Resource แล้วระบบไม่กลับปกติ
ไม่ควรฝืน Restart Resource ทีละตัวถ้าระบบทั้งเมืองเกี่ยวข้องกัน
㊽ Checklist ก่อน Restart Resource
ตรวจตามนี้
ชื่อ Resource ถูกต้อง
Resource กำลัง Running
รู้ Dependency
ไม่มี Transaction สำคัญ
มี Backup ถ้าแก้ Code/Config ใหญ่
Admin มี Permission
แจ้ง Player หากจำเป็น
เปิด Live Console
Restart Resource
ตรวจ Error
ทดสอบ Feature
Monitor Server
ช่วยลดความเสี่ยงบน Production
㊾ วิธี Restart Resource แบบสั้นที่สุด
ถ้า Resource ชื่อ
my_resource
เข้า txAdmin Live Console แล้วพิมพ์
restart my_resource
หากต้องการให้ Resource Running ไม่ว่าก่อนหน้านั้นจะหยุดหรือเปิดอยู่ ใช้
ensure my_resource
ถ้าเพิ่งเพิ่ม Resource ใหม่ ให้ใช้
refresh
ensure my_resource
นี่คือ Workflow พื้นฐานที่ควรจำ
㊿ สรุปวิธี Restart Resource ผ่าน txAdmin
การ Restart Resource ผ่าน txAdmin ช่วยแก้หรือ Reload ระบบบางส่วนโดยไม่ต้องทำให้ FiveM Server ทั้งหมด Restart
คำสั่งหลักคือ
restart resource_name
และ FiveM ยังมี
start resource_name
stop resource_name
ensure resource_name
refresh
สำหรับจัดการ Resources ตามสถานการณ์
จำความแตกต่างสำคัญนี้
restart
= Restart Resource ที่กำลังทำงาน
ensure
= ถ้าทำงานอยู่ให้ Restart
ถ้าหยุดอยู่ให้ Start
refresh
= Scan Resource Folder ใหม่
txAdmin รองรับ Resource Management และ Permission ที่เกี่ยวข้องคือ commands.resources ส่วน Admin ที่ส่งคำสั่งผ่าน Live Console ต้องมีสิทธิ์ Console ที่เหมาะสมด้วย
สำหรับ Development Server การ Restart Resource เป็นเครื่องมือที่ใช้บ่อยมาก เพราะช่วย Reload Script ได้รวดเร็วโดยไม่ต้อง Restart เมืองทุกครั้ง
แต่สำหรับ Production Server comsiam แนะนำให้ระวังเป็นพิเศษกับ Core Framework, Inventory, Database Library, Banking, Housing และ Resource ที่เก็บ Player State เพราะการ Restart กลาง Transaction อาจทำให้ State ของระบบไม่สอดคล้องกัน
แนวทางที่ดีที่สุดคือ
แก้ Resource
↓
ตรวจ Dependency
↓
แจ้ง Player ถ้าจำเป็น
↓
Restart
↓
ดู Console
↓
ทดสอบ Feature
↓
Monitor
เมื่อเข้าใจความแตกต่างระหว่าง restart, ensure, start, stop และ refresh แล้ว ผู้ดูแล FiveM Server ของ comsiam จะสามารถแก้ไขและทดสอบ Resource ได้เร็วขึ้น โดยไม่จำเป็นต้อง Restart FXServer ทั้งเมืองทุกครั้ง
Comments
Post a Comment