Cho em hỏi chút. Nếu em dùng compound index 3 field ví dụ { user_id, status, create_at } thì có những câu query chỉ theo user_id hoặc status hoặc 2 trong 3 field thì index có hiệu quả không anh.
Đoạn này nghe có vẻ ok ạ, nhưng như vậy laravel echo phải init trong con PM2 này ạ
đúng rồi e
Em thấy anh cần chạy 1 cái queue để đưa mess vào hàng đợi, tức là mình phải dùng command line php artisan queue:work, trên server anh làm sao để giữ được command tương tự ?
Quên ko làm rõ với e, đoạn này đợt đầu a dùng bg, 1 thời gian ngắn, sau đó a chuyển sang Docker luôn. Nhưng đúng là dùng supervisor thì tiện hơn nhiều, bây giờ nếu phải làm lại thì a sẽ dùng supervisor
INFO [04-10|15:35:40.458] Looking for peers peercount=1 tried=33 static=0
Mình setup độ khó là 0x00 rồi mà đào mãi ko được một ETH nào
khi đào nó vào account lúc tạo ở terminal phải ko hay phải có một bước nữa để set account nào đào
Ở thời điểm hiện tại, nếu bạn học Dart, bạn sẽ chỉ có thể dùng nó cho những project Flutter. Còn nếu bạn đầu tư vào Javascript/Typescript thì gần như chỗ nào bạn cũng có đất diễn cả, và đó là lí do ngôn ngữ sẽ là điểm mạnh để RN có thể lôi kéo nhiều dev mới hơn.
Flutter & Dart đã có thể sử dụng để build webapp thông qua project Hummingbird và Dart hoàn toàn có thể dc sử dụng để build back-end server
A không cần supervisor, server a là Ubuntu a cài vào đủ theo yêu cầu project này: PHP, MySQL, Redis là đủ cho project Laravel (cài qua apt hết nhé)
Em thấy anh cần chạy 1 cái queue để đưa mess vào hàng đợi, tức là mình phải dùng command line php artisan queue:work, trên server anh làm sao để giữ được command tương tự ?
Riêng Laravel Echo a chạy như 1 app NodeJS ở cổng 6001. A viết script .js rồi dùng PM2 để chạy
Đoạn này nghe có vẻ ok ạ, nhưng như vậy laravel echo phải init trong con PM2 này ạ
@nam123456 mình nghĩ bạn cứ vững base đi, vì khi bạn chuyển sang học laravel thì những thứ như phân trang các kiểu kia chỉ tốn của bạn 2-3 line code thôi
Cám ơn e , câu hỏi rất hay. Chờ mãi mới có người hỏi về deploy
Câu đầu tiên: a chỉ fix localhost:8000 ở mỗi file laravel-echo-server.json thôi mà e
Deploy chia làm 2 khoảng thời gian, ngày xưa và bây giờ , vì mỗi khoảng a deploy theo cách khác nhau
Ngày xưa (cách truyền thống):
A không cần supervisor, server a là Ubuntu a cài vào đủ theo yêu cầu project này: PHP, MySQL, Redis là đủ cho project Laravel (cài qua apt hết nhé)
Riêng Laravel Echo a chạy như 1 app NodeJS ở cổng 6001. A viết script .js rồi dùng PM2 để chạy
Tiếp theo a dùng Nginx như webserver vừa để chạy phần code php của Laravel (ra production mình ko có chạy php artisan server nữa nhé), vừa để forward các request cần thiết vào process Laravel Echo ở trên, đồng thời dùng Nginx thì lấy SSL(HTTPS) rất là dễ. Vậy là đủ để chạy project này.
Thời bây giờ (cách tiện hơn): yêu cầu kiến thức về Docker.
A ko cần cài PHP MySQL các thứ lằng nhằng nữa. Nhưng vẫn cần Nginx (a ko muốn chạy Nginx trong Docker vì a dùng Nginx cho nhiều project)
A viết cấu hình Dockerfile. chia project thành các service cần thiết (Mysql, Redis, Laravel Echo,....) và chạy
Cách này cực kì tiện vì e ko cần cài trực tiếp các thứ như PHP MySQL,... vào hệ điều hành, thích sửa xoá j làm thoải mái ko sợ bị hỏng, và 1 thời gian sau quay lại nhìn vào Dockerfile là e biết project của mình cần gì. Deploy và maintain cực dễ
Với cách này thì a thì a cũng chia Laravel Echo ra thành 1 service có image riêng (về khía cạnh trừu tượng thì cũng giống cách chạy như ở cách truyền thống)
Quay trở lại localhost:8000 a fix ở file laravel-echo-server.json có ảnh hưởng gì khi deploy ko? Câu trả lời là không nhé, ở phạm vi bài này, thì ko sao cả, vì khi deploy thì ta ko cần chạy php artisan serve nữa, mà dùng Nginx để "serve" Laravel.
Vậy những chỗ fix cứng localhost:8000 trong laravel-echo-server.json thì sao??? Chi tiết: trong file đó có 2 chỗ a fix cứng 1 là authHost 2 là dưới phần apiOriginAllow (để lấy danh sách user)
Vì bài này ta chỉ là public channel, nên authHost ko động tới, ta ko quan tâm
Còn với apiOriginAllow thì e đọc bên dưới nhé
Ở Nginx a cấu hình sao cho các route về /socket.io hay /apps (để lấy danh sách user trong phòng), nói chung là bắt những route giao tiếp với Laravel Echo Server, thì request sẽ được forward vào process Laravel Echo như sau:
location ~ ^/(socket.io|apps) { # /apps to get channel's info, list users,... from Laravel echo server
proxy_pass http://localhost:6001; # forward request vào đây
... other options;
}
Vậy khi truy cập từ trình duyệt, ví dụ https://example.com/socket.io/.... thì request sẽ tới Nginx, từ nginx request sẽ được pass vào http://localhost:6001, và bởi vì Nginx và Laravel Echo Server chạy ở cùng 1 server nên chúng sẽ tự biết nhau khi gọi tới localhost. Do đó e thấy ở đây request từ user bản chất là gọi vào localhost:6001 ở trên server, chính là cổng đang chạy laravel-echo-server, do đó đây KHÔNG phải là Cross-Origin, sẽ ko bị lỗi CORS. do đó thực chất trường apiOriginAllow khi deploy chạy thật thì cũng ko để làm gì cả . Chỉ dùng ở local, vì local ta chạy Laravel ở localhost:8000, trong khi Laravel Echo Server là localhost:6001, nên ta mới phải cấu hình như vậy ở trong file laravel-echo-server.json để cho phép localhost:8000 gọi tới (để lấy danh sách user chẳng hạn)
Câu cuối: bài này còn ở dạng demo, với project thật thì thường a lưu các biến cần thiết ở trong file .env, file này deploy theo cách truyền thống hay Docker thì cũng để tái sử dụng được rất là dễ. Các biến, URL, API_KEY,... sẽ ko fix cứng trong code nữa mà để ở đây
THẢO LUẬN
Vâng, thanks anh nhiều
Bài viết không có tâm Thực sự những bài này càng làm giảm chất lượng của trang web
là object thông thường đó bác, ko chứa các method, chỉ chứa các property thôi
@datcpu chỉ có query user_id hoặc user_id + status hoặc cả 3 field thì mới hiệu quả nhé. Tuân theo quy luật prefix
hay qua lan 4 hihihi
bai viet nay hay qua hihhi
Koin phù hợp cho người mới bắt đầu. Tuy nhiên đối với project to thì Koin không thể đáp ứng được. Ngoài ra Koin không phải DI mà là Service locator
hay quá, thần tượng ơi! Rất dễ hiều và nhiều trường hợp hay gặp phải. (thatim)
Cho em hỏi chút. Nếu em dùng
compound index3 field ví dụ{ user_id, status, create_at }thì có những câu query chỉ theouser_idhoặcstatushoặc 2 trong 3 field thì index có hiệu quả không anh.pm2 cài như package npm thôi e, đơn giản mà
), pm2 ng ta dùng cũng nhiều
à vâng, chỉ là 2 cái process kia em dùng bg để chạy ngầm =)) ngại cài PM2 quá . K biết có rủi ro gì k ạ
ra production, đừng dùng
php artisan servenhé e. Trang chủ Laravel cũng recommend, lí do vì sao e search gg nhéNên dùng 1 webserver để chạy. Apache hoặc Nginx, bây giờ ng ta thường dùng Nginx.
Vậy mình dùng luôn bg cho con laravel echo được k anh nhỉ :v
đúng rồi e
Quên ko làm rõ với e, đoạn này đợt đầu a dùng
bg, 1 thời gian ngắn, sau đó a chuyển sang Docker luôn. Nhưng đúng là dùng supervisor thì tiện hơn nhiều, bây giờ nếu phải làm lại thì a sẽ dùngsupervisorINFO [04-10|15:35:40.458] Looking for peers peercount=1 tried=33 static=0 Mình setup độ khó là 0x00 rồi mà đào mãi ko được một ETH nào khi đào nó vào account lúc tạo ở terminal phải ko hay phải có một bước nữa để set account nào đào
Flutter & Dart đã có thể sử dụng để build webapp thông qua project Hummingbird và Dart hoàn toàn có thể dc sử dụng để build back-end server
Hi bạn, mình đang cần tìm hiểu về test phần cứng. Bạn có thể cho mình xin contact mình hỏi 1 số vấn đề được k ạ?
Em thấy anh cần chạy 1 cái queue để đưa mess vào hàng đợi, tức là mình phải dùng command line php artisan queue:work, trên server anh làm sao để giữ được command tương tự ?
Đoạn này nghe có vẻ ok ạ, nhưng như vậy laravel echo phải init trong con PM2 này ạ
@nam123456 mình nghĩ bạn cứ vững base đi, vì khi bạn chuyển sang học laravel thì những thứ như phân trang các kiểu kia chỉ tốn của bạn 2-3 line code thôi
Cám ơn e , câu hỏi rất hay. Chờ mãi mới có người hỏi về deploy
Câu đầu tiên: a chỉ fix
localhost:8000ở mỗi filelaravel-echo-server.jsonthôi mà eDeploy chia làm 2 khoảng thời gian, ngày xưa và bây giờ
, vì mỗi khoảng a deploy theo cách khác nhau
Ngày xưa (cách truyền thống):
apthết nhé).jsrồi dùngPM2để chạyphp artisan servernữa nhé), vừa để forward các request cần thiết vào process Laravel Echo ở trên, đồng thời dùng Nginx thì lấy SSL(HTTPS) rất là dễ. Vậy là đủ để chạy project này.Thời bây giờ (cách tiện hơn): yêu cầu kiến thức về Docker.
Quay trở lại
localhost:8000a fix ở filelaravel-echo-server.jsoncó ảnh hưởng gì khi deploy ko? Câu trả lời là không nhé, ở phạm vi bài này, thì ko sao cả, vì khi deploy thì ta ko cần chạyphp artisan servenữa, mà dùng Nginx để "serve" Laravel.Vậy những chỗ fix cứng
localhost:8000tronglaravel-echo-server.jsonthì sao??? Chi tiết: trong file đó có 2 chỗ a fix cứng 1 làauthHost2 là dưới phầnapiOriginAllow(để lấy danh sách user)authHostko động tới, ta ko quan tâmapiOriginAllowthì e đọc bên dưới nhéỞ Nginx a cấu hình sao cho các route về
/socket.iohay/apps(để lấy danh sách user trong phòng), nói chung là bắt những route giao tiếp với Laravel Echo Server, thì request sẽ được forward vào process Laravel Echo như sau:Vậy khi truy cập từ trình duyệt, ví dụ
. Chỉ dùng ở local, vì local ta chạy Laravel ở
https://example.com/socket.io/....thì request sẽ tới Nginx, từ nginx request sẽ được pass vàohttp://localhost:6001, và bởi vì Nginx và Laravel Echo Server chạy ở cùng 1 server nên chúng sẽ tự biết nhau khi gọi tớilocalhost. Do đó e thấy ở đây request từ user bản chất là gọi vàolocalhost:6001ở trên server, chính là cổng đang chạylaravel-echo-server, do đó đây KHÔNG phải là Cross-Origin, sẽ ko bị lỗi CORS. do đó thực chất trườngapiOriginAllowkhi deploy chạy thật thì cũng ko để làm gì cảlocalhost:8000, trong khi Laravel Echo Server làlocalhost:6001, nên ta mới phải cấu hình như vậy ở trong filelaravel-echo-server.jsonđể cho phéplocalhost:8000gọi tới (để lấy danh sách user chẳng hạn)