Hướng dẫn dùng process.hrtime trong PHP

Được phát ra khi process sắp thoát. Không có cách nào để ngăn việc thoát khỏi vòng lặp sự kiện tại thời điểm này và khi tất cả các trình nghe thoát đã chạy xong thì process sẽ thoát.

beforeExit

Sự kiện này được phát ra khi nút trống vòng lặp sự kiện của nó và không có gì khác để lên lịch. Thông thường, nút thoát khi không có công việc nào được lên lịch, nhưng một trình nghe cho 'beforeExit' có thể thực hiện các lời gọi không đồng bộ và khiến nút sẽ tiếp tục.

uncaughtException

Được phát ra khi một ngoại lệ quay trở lại vòng lặp sự kiện. Nếu một trình nghe được thêm vào cho ngoại lệ này, thì hành động mặc định [là in một dấu vết ngăn xếp và thoát] sẽ không xảy ra.

Sự kiện tín hiệu

Được phát ra khi các process nhận được một tín hiệu như SIGINT, SIGHUP, v.v.

Ví dụ

Tạo tệp js có tên demo_process_event.js với mã sau để lắng nghe sự kiện thoát:

process.on['exit', function[code] {
   // đoạn code sau sẽ không bao giờ được thực thi:
   setTimeout[function[] {
      console.log["This will not run"];
   }, 0];
  
   console.log['Mã exit: ', code];
}];
console.log["End"];

Thực thi:

C:\Users\Your name>node demo_process_event.js

Kết quả:

End
Mã exit:  0

Mã thoát

Node.js thường thoát với mã trạng thái 0 khi không còn hoạt động không đồng bộ nào đang chờ xử lý. Có các mã thoát khác được mô tả bên dưới đây:

Tên và mô tả

Uncaught Fatal Exception

Có một ngoại lệ không được nghĩ đến và nó không được xử lý bởi miền hoặc trình xử lý sự kiện uncaughtException.

Unused

Được bảo lưu bởi Bash để sử dụng sai mục đích.

Internal JavaScript Parse Error

Mã nguồn JavaScript nội bộ trong quá trình khởi động của Node.js gây ra lỗi phân tích cú pháp. Điều này cực kỳ hiếm và thường chỉ có thể xảy ra trong quá trình phát triển của chính Node.js.

Internal JavaScript Evaluation Failure

Mã nguồn JavaScript nội bộ trong quy trình khởi động của Node.js không thể trả về giá trị hàm khi được đánh giá. Điều này cực kỳ hiếm và thường chỉ có thể xảy ra trong quá trình phát triển của chính Node.js.

Fatal Error

Đã xảy ra lỗi nghiêm trọng không thể khôi phục trong V8. Thông thường, một tin nhắn sẽ được in ra stderr với tiền tố FATAL ERROR.

Non-function Internal Exception Handler

Có một ngoại lệ không được đề xuất, nhưng hàm xử lý ngoại lệ nghiêm trọng bên trong bằng cách nào đó đã được đặt thành một hàm không phải là hàm và không thể được gọi.

Internal Exception Handler Run-Time Failure

Có một ngoại lệ không được lưu ý và bản thân chức năng xử lý ngoại lệ nghiêm trọng bên trong đã tạo ra một lỗi trong khi cố gắng xử lý nó.

Invalid Argument

Một tùy chọn không xác định đã được chỉ định hoặc một tùy chọn yêu cầu giá trị được cung cấp mà không có giá trị.

Internal JavaScript Run-Time Error

Mã nguồn JavaScript nội bộ trong quá trình khởi động của Node.js đã gặp lỗi khi hàm khởi động được gọi. Điều này cực kỳ hiếm và thường chỉ có thể xảy ra trong quá trình phát triển của chính Node.js.

Invalid Debug Argument

Các tùy chọn --debug và/hoặc --debug-brk đã được đặt, nhưng số cổng không hợp lệ đã được chọn.

Signal Exits

Nếu Node.js nhận được một tín hiệu nghiêm trọng như SIGKILL hoặc SIGHUP, thì mã thoát của nó sẽ là 128 cộng với giá trị của mã tín hiệu. Đây là một thực hành Unix tiêu chuẩn, vì mã lối ra được định nghĩa là số nguyên 7 bit và các lần thoát tín hiệu đặt bit bậc cao, sau đó chứa giá trị của mã tín hiệu.

Các thuộc tính của process

Process cung cấp nhiều thuộc tính hữu ích để kiểm soát tốt hơn các tương tác của hệ thống.

Thuộc tính và mô tả

stdout

Một Writable Stream tới stdout.

stderr

Một Writable Stream tới stderr.

stdin

Một Writable Stream tới stdin.

argv

Một mảng chứa các đối số dòng lệnh. Phần tử đầu tiên sẽ là 'node', phần tử thứ hai sẽ là tên của tệp JavaScript. Các phần tử tiếp theo sẽ là bất kỳ đối số dòng lệnh bổ sung nào.

execPath

Đây là tên đường dẫn tuyệt đối của tệp thực thi mà đã bắt đầu process.

execArgv

Đây là tập hợp các tùy chọn dòng lệnh dành riêng cho từng nút từ tệp thực thi đã bắt đầu process.

env

Một đối tượng chứa môi trường người dùng.

exitCode

Một số sẽ là mã thoát quy trình, khi process thoát một cách nhẹ nhàng hoặc được thoát qua process.exit[] mà không chỉ định mã.

version

Thuộc tính được biên dịch để lộ NODE_VERSION.

versions

Thuộc tính hiển thị các chuỗi phiên bản của nút và các phụ thuộc của nó.

config

Một đối tượng chứa biểu diễn JavaScript của các tùy chọn cấu hình được sử dụng để biên dịch tệp thực thi nút hiện tại. Tệp này giống với tệp "config.gypi" được tạo khi chạy tập lệnh ./configure.

pid

PID của process.

title

Getter/setter để đặt những gì được hiển thị trong 'ps'.

arch

Bạn đang chạy trên kiến ​​trúc bộ xử lý nào: 'arm', 'ia32' hoặc 'x64'.

platform

Bạn đang chạy trên nền tảng nào: 'darwin', 'freebsd', 'linux', 'sunos' hoặc 'win32'

mainModule

Cách thay thế để truy xuất request.main. Sự khác biệt là nếu mô-đun chính thay đổi trong thời gian chạy, thì request.main vẫn có thể tham chiếu đến mô-đun chính ban đầu trong các mô-đun được yêu cầu trước khi thay đổi xảy ra. Nói chung, thật an toàn khi cho rằng cả hai tham chiếu đến cùng một mô-đun.

Ví dụ

Tạo tệp js có tên demo_process_property.js với mã sau:

// in ra console
process.stdout.write["Hello Node.js!" + "\n"];

// đọc tham số đã truyền
process.argv.forEach[function[val, index, array] {
   console.log[index + ': ' + val];
}];

// lấy đường dẫn thực thi
console.log[process.execPath];

// thông tin platform 
console.log[process.platform];

Thực thi:

C:\Users\Your name>node demo_process_property.js

Kết quả:

Hello Node.js!
0: C:\Program Files\nodejs\node.exe
1: C:\Users\LongDT\nodejs\demo_process_property.js
C:\Program Files\nodejs\node.exe
win32

Các phương thức tham khảo

Process cung cấp nhiều phương thức hữu ích để kiểm soát tốt hơn các tương tác của hệ thống.

Phương thức và mô tả

abort[]

Nó khiến node phát ra lệnh hủy bỏ. Nó khiến node thoát và tạo ra một tệp lõi.

chdir[directory]

Thay đổi thư mục làm việc hiện tại của process hoặc ném một ngoại lệ nếu không thành công.

cwd[]

Trả về thư mục làm việc hiện tại của process.

exit[[code]]

Kết thúc process với mã được chỉ định. Nếu bị bỏ qua code thì exit sẽ sử dụng code 'success' 0.

getgid[]

Nhận danh tính nhóm của process. Đây là id nhóm bằng số, không phải tên nhóm. Chức năng này chỉ khả dụng trên nền tảng POSIX [tức là không phải Windows, Android].

setgid[id]

Đặt danh tính nhóm của process. [Xem setgid[2]]. Nó chấp nhận một ID số hoặc một chuỗi tên nhóm. Nếu tên nhóm được chỉ định thì phương thức này sẽ chặn trong khi phân giải nó thành ID số. Chức năng này chỉ khả dụng trên nền tảng POSIX [tức là không phải Windows, Android].

getuid[]

Nhận danh tính người dùng của process. Đây là id số, không phải tên người dùng. Chức năng này chỉ khả dụng trên nền tảng POSIX [tức là không phải Windows, Android].

setuid[id]

Đặt danh tính người dùng của process [Xem setgid [2]]. Nó chấp nhận một ID số hoặc một chuỗi tên người dùng. Nếu tên người dùng được chỉ định thì phương thức này sẽ chặn trong khi phân giải nó thành ID số. Chức năng này chỉ khả dụng trên nền tảng POSIX [tức là không phải Windows, Android].

getgroups[]

Trả về một mảng có ID nhóm bổ sung. POSIX không xác định nếu ID nhóm hiệu quả được tích hợp, nhưng Node.js đảm bảo nó luôn như vậy. Chức năng này chỉ khả dụng trên nền tảng POSIX [tức là không phải Windows, Android].

setgroups[groups]

Đặt ID nhóm bổ sung. Đây là một hoạt động đặc quyền, có nghĩa là bạn phải ở gốc hoặc có khả năng CAP_SETGID. Chức năng này chỉ khả dụng trên nền tảng POSIX [tức là không phải Windows, Android].

initgroups[user, extra_group]

Đọc /etc/group và khởi tạo danh sách truy cập nhóm, sử dụng tất cả các nhóm mà người dùng là thành viên. Đây là một hoạt động đặc quyền, có nghĩa là bạn phải ở gốc hoặc có khả năng CAP_SETGID. Chức năng này chỉ khả dụng trên nền tảng POSIX [tức là không phải Windows, Android].

kill[pid[, signal]]

Gửi tín hiệu cho một process. pid là id tiến trình và signal là chuỗi mô tả tín hiệu cần gửi. Tên tín hiệu là các chuỗi như 'SIGINT' hoặc 'SIGHUP'. Nếu bỏ qua, tín hiệu sẽ là 'SIGTERM'.

memoryUsage[]

Trả về một đối tượng mô tả việc sử dụng bộ nhớ của process được đo bằng byte.

nextTick[callback]

Khi vòng lặp sự kiện hiện tại đến lượt hoàn thành thì sẽ gọi hàm callback.

umask[[mask]]

Đặt hoặc đọc mặt nạ tạo chế độ tệp của process. Các process con kế thừa mặt nạ từ process cha. Trả về mặt nạ cũ nếu đối số mặt nạ được đưa ra, nếu không trả về mặt nạ hiện tại.

uptime[]

Số giây Node.js đã được chạy.

hrtime[]

Trả về thời gian thực có độ phân giải cao hiện tại trong Mảng tuple [giây, nano giây]. Nó là tương đối với một thời gian tùy ý trong quá khứ. Nó không liên quan đến thời gian trong ngày và do đó không bị trôi đồng hồ. Việc sử dụng chính là để đo hiệu suất giữa các khoảng thời gian.

Chủ Đề