01/10/2018, 13:42

Cách cron 1 file nodejs trên vps

bài viết cũ của em Cách tăng tốc độ chạy 1 script PHP + MySQL

em đã chuyển sang code nodejs thay cho php , em test thử trên node prompt của window thì đã thành công và rất nhanh. giờ em muốn up nó lên vps của em ngoài việc cài nodejs lên vps thành công, thì up lên và Cron cho nó chạy tự động ( như php em dùng lệnh * * * * * curl http://link ) để cron thì nodejs thì như nào ạ. EM xin cảm ơn!

VPS của e là Linux, centos 6 64 bit ạ!

Dark.Hades viết 15:46 ngày 01/10/2018

Sao chạy curl lại là lệnh để script php kia trở thành cron vậy bạn??

Hoàng Văn Duy viết 15:49 ngày 01/10/2018

ví dụ em có 1 file post.php để đăng bài lên fb, em vào phần crontab và thêm lệnh *.5 * * * * curl http://domain/post.php thì 5 phút nó sẽ chạy file post.php 1 lần và post ạ!!

Hoàng Văn Duy viết 15:50 ngày 01/10/2018

em không nghĩ là có thể dùng dạng * * * * * curl http://domain/file.js tương tự như .php :V

Hoàng Văn Duy viết 15:42 ngày 01/10/2018

chắc a chưa xài lệnh cron dùng curl kia, có nhiều lệnh như php -q , php đường dẫn đến php file nữa

Dark.Hades viết 15:53 ngày 01/10/2018

Ý mình là sao phải mất công chạy curl trong khi chỉ cần gọi php cli run script đó. Việc bạn dùng curl sẽ khiến vps chịu tải thêm ≥3 process, nếu dùng php cli thì vps chỉ chịu 1 process

Cronjob nó là phần mềm giúp bạn gọi một chương trình khác có sẵn trên máy, chạy nodejs thì đặt lệnh của nodejs là được rồi, script không cần bật socket nữa mà thực hiện query luôn

lite2210 viết 15:58 ngày 01/10/2018

Nodejs có module node-schedule để đặt lịch chạy bằng code, ko cần cronjob.

Còn muốn làm cronjob thì tạo server (= http, express, hapi… tuỳ bạn chọn 1 cái). Server đó sẽ handle request gửi tới rồi chạy file của bạn. Bạn ko thể gọi trực tiếp file .js như trên php đâu.

// đừng áp dụng kiến thức php vào nodejs, 1 số chỗ bạn sẽ thấy nó lủng củng ko đâu vào đâu, giỏi gì thì làm cái đó, đừng chạy theo phong trào.

Dark.Hades viết 15:43 ngày 01/10/2018

Không phải là php gọi được file trực tiếp trên trình duyệt, mà là do cái cgi/apache/nginx nó có plugin hỗ trợ. Còn nếu viết server php qua socket bsd thì nó y hệt nodejs.
Ngược lại, nếu nodejs được nginx,… nó hỗ trợ plugin thì cũng gọi bình thường.

Ice Tea viết 15:47 ngày 01/10/2018

@lite2210
Cái này chạy ở môi trường cli mà, cần gì phải tạo server hay handle request gì?
PHP thì chạy:
php file.php
Còn Nodejs thì:
node file.js

Còn cái node-schedule muốn nó chạy job thì cũng phải để cái script nó chạy ngầm liên tục để đếm thời gian lôi cái job ra chạy. Tốn thêm tài nguyên.

Của chủ thớt đơn giản chỉ cần nhét lệnh node file.js vào cron job là xong (chú ý đường dẫn đến command node và file.js)

Vô Thin viết 15:47 ngày 01/10/2018

Chắc chủ thớt không phân biệt được ngôn ngữ script với ngôn ngữ được compiled nên phải dùng curl để nhờ cậy web server (để cho nó thêm phần… long trọng), trong khi đó có thể gọi script chạy ngon lành mà không cần đến web server.

Hoàng Văn Duy viết 15:47 ngày 01/10/2018

vậy cách cronjob tự chạy 1 file php mà không dùng lệnh curl trong crontab như thế nào ạ??

Dark.Hades viết 15:42 ngày 01/10/2018

Ở phần command bạn đặt là
php <đường dẫn tuyệt đối của script php>

Node js tương tự

Hoàng Văn Duy viết 15:43 ngày 01/10/2018

nó sẽ nhanh hơn dùng curl http://link ạ ?

Dark.Hades viết 15:44 ngày 01/10/2018

Bạn thử so sánh việc chạy một phần mềm mà phải mở tới 4 tầng cha rồi mới gọi con và gọi nó luôn thì cái nào nhanh hơn?

Workflow của việc gọi qua webserver:
Cron -> curl -> apache -> php -> compile

Quang Vu Quang viết 15:58 ngày 01/10/2018

EM có thể dùng module này
https://github.com/kelektiv/node-cron

Vinh Tran viết 15:56 ngày 01/10/2018

bạn cài phần mềm PM2 vào con CentOS nhé. Cài xong bạn dùng lệnh pm2 start file .js là đc

Quang Vu Quang viết 15:43 ngày 01/10/2018

Bản thân Nodejs có support Cron mà, dùng luôn của nó cần gì cron của hệ thống ?

Bài liên quan
0