Bỏ qua_user_abort trong PHP

Đã bao nhiêu lần bạn duyệt đến một trang cụ thể chỉ để thoát hoặc đóng trình duyệt trước khi trang tải hoàn toàn?

Thí dụ

Tuy nhiên, nếu máy chủ đang trong quá trình cập nhật thông tin hồ sơ người dùng quan trọng hoặc hoàn tất giao dịch thương mại thì sao?

Nếu được bật, yêu cầu sẽ được phép hoàn thành ngay cả khi người dùng hủy bỏ yêu cầu. Cân nhắc kích hoạt nó nếu thực hiện các yêu cầu dài, có thể bị gián đoạn bởi người dùng hoặc trình duyệt hết thời gian chờ. Hành vi mặc định của PHP là tắt tính năng này

Loại bỏ sự không chắc chắn khỏi Dịch vụ lưu trữ web và để GoDaddy. com đưa dịch vụ, hiệu suất và giá trị trở lại. Bất kể bạn chọn loại lưu trữ hoặc gói nào, trang web của bạn sẽ được bảo trì và bảo vệ 24/7 trong trung tâm dữ liệu đẳng cấp thế giới của chúng tôi. Ngoài ra, bạn sẽ nhận được dịch vụ thân thiện, chuyên nghiệp mà bạn xứng đáng được hưởng, từ nhà cung cấp tên máy chủ lớn nhất thế giới

Với ba kế hoạch để lựa chọn và giá chỉ bắt đầu từ $4. 99 mỗi tháng, GoDaddy. com chắc chắn sẽ có gói phù hợp với kích thước và giá phù hợp chỉ dành cho bạn

Tất cả các gói đều có thiết lập MIỄN PHÍ 24x7, giám sát 24x7 MIỄN PHÍ, bộ định tuyến, tường lửa và máy chủ tốt nhất, bảo mật vật lý tại chỗ 24x7 và quyền truy cập vào Kết nối lưu trữ Go Daddy độc quyền của chúng tôi, nơi cài đặt hơn 30 ứng dụng MIỄN PHÍ. Các gói Máy chủ chuyên dụng và Máy chủ ảo cũng có sẵn. Ghé thăm GoDaddy. com hôm nay

Gói chuyên dụng ảo, Máy chủ chuyên dụng và không giới hạn cũng có sẵn

Tiết kiệm 10% khi lưu trữ web - Nhập mã w3tenoff khi thanh toán




Bỏ qua_user_abort trong PHP

Nhận bằng tốt nghiệp của bạn

Chương trình chứng chỉ trực tuyến của W3Schools là giải pháp hoàn hảo cho các chuyên gia bận rộn, những người cần cân bằng giữa công việc, gia đình và xây dựng sự nghiệp

Chứng chỉ HTML dành cho các nhà phát triển muốn ghi lại kiến ​​thức của họ về HTML, XHTML và CSS

Chứng chỉ JavaScript dành cho các nhà phát triển muốn ghi lại kiến ​​thức của họ về JavaScript và HTML DOM

Đối với hầu hết các phần, các tập lệnh PHP của bạn sẽ tạo đầu ra dành cho máy khách ở đâu đó, thường là trình duyệt web. Nhưng điều gì sẽ xảy ra nếu trình duyệt web đó bị đóng giữa chừng trong quá trình thực thi tập lệnh của bạn - bạn có hoàn tất quá trình xử lý và hy vọng điều tốt nhất không?

Việc chuyển true thành ign_user_abort() vì tham số duy nhất của nó sẽ hướng dẫn PHP rằng tập lệnh sẽ không bị chấm dứt ngay cả khi người dùng cuối của bạn đóng trình duyệt của họ, đã điều hướng đến một trang web khác hoặc đã nhấp vào Dừng. Điều này hữu ích nếu bạn có một số xử lý quan trọng cần thực hiện và bạn không muốn dừng quá trình đó ngay cả khi người dùng của bạn nhấp vào hủy, chẳng hạn như thực hiện thanh toán qua thẻ tín dụng. Tất nhiên, bạn cũng có thể chuyển sai thành ign_user_abort(), do đó làm cho PHP thoát khi người dùng đóng kết nối

Để xử lý các tác vụ tắt máy, register_shutdown_function() là hoàn hảo, vì nó cho phép bạn đăng ký với PHP một chức năng sẽ được chạy khi quá trình thực thi tập lệnh kết thúc. Hãy xem ví dụ này


Lưu mã đó và dùng thử - bạn sẽ nhận được kết quả sau trong đầu ra

Như bạn có thể thấy, say_goodbye() được gọi khi tập lệnh kết thúc, theo kế hoạch. Bạn có thể gọi register_shutdown_function() nhiều lần khi chuyển qua các hàm khác nhau và PHP sẽ gọi tất cả các hàm theo thứ tự bạn đã đăng ký khi tập lệnh kết thúc. Nếu bất kỳ chức năng tắt máy nào của bạn gọi là "thoát", tập lệnh sẽ kết thúc mà không chạy các chức năng còn lại

Một cách sử dụng rất hữu ích cho các chức năng tắt máy là xử lý việc chấm dứt tập lệnh không mong muốn - tôi. e. thời gian chờ tập lệnh. Nếu tập lệnh của bạn hết thời gian, bạn vừa mất quyền kiểm soát đối với bất kỳ việc gì bạn đang làm, vì vậy bạn cần sao lưu và hoàn tác bất kỳ việc gì bạn vừa thực hiện hoặc bạn cần dọn dẹp và chấm dứt hoàn toàn. Dù bằng cách nào, chức năng tắt máy là hoàn hảo. đăng ký một chức năng dọn dẹp gần đầu tập lệnh và khi thời gian chờ của tập lệnh xảy ra, chức năng dọn dẹp sẽ tự động chạy

Ví dụ: đoạn script sau sẽ in ra "Đang ngủ. Tạm biệt. "


"Hoàn thành. " dòng in sẽ không bao giờ được thực thi, vì giới hạn thời gian được đặt thành 1 và hàm sleep() được gọi với tham số là 2, vì vậy tập lệnh sẽ ngủ trong 2 giây. Kết quả là, "Ngủ. " được in, có thể theo sau là cảnh báo về việc tập lệnh vượt quá giới hạn thời gian của nó, sau đó chức năng tắt máy được gọi

Tất nhiên, vấn đề với suy nghĩ này là các chức năng tắt máy thực thi bất kể có hết thời gian chờ hay không, do đó, không nên đặt chức năng dọn dẹp làm chức năng tắt máy - nó sẽ luôn thực thi. Tuy nhiên, PHP đã giải cứu bằng hàm connection_status(), hàm này không nhận tham số và trả về 0 nếu kết nối đang hoạt động và quá trình thực thi vẫn đang diễn ra, 1 nếu kết nối bị hủy (connection_timeout() cũng sẽ trả về true), 2

Tình huống cuối cùng chỉ có thể xảy ra nếu ignore_user_abort(true) đã được sử dụng và tập lệnh sau đó đã hết thời gian chờ. Lưu ý rằng các giá trị 0, 1, 2 và 3 đánh giá các hằng số CONNECTION_NORMAL, CONNECTION_ABORTED, CONNECTION_TIMEOUT và CONNECTION_ABORTED. CONNECTION_TIMEOUT (một chút HOẶC khôn ngoan của hai phần trước)

Vì vậy, lưu ý đến chức năng mới này, đây là tập lệnh của chúng ta được viết lại để lưu ý xem việc tắt máy xảy ra do tập lệnh đã hoàn tất hay do đã hết thời gian chờ của tập lệnh


Lần này, mặc dù "Xong. " vẫn sẽ không được in ra, tập lệnh ít nhất có thể phát hiện thời gian chờ của tập lệnh đơn giản

Chức năng nào đặt xem việc ngắt kết nối máy khách có nên hủy bỏ việc thực thi tập lệnh trong tình huống nào mà bạn với tư cách là nhà phát triển web sẽ sử dụng hay không?

Điều nào sau đây được sử dụng để chấm dứt việc thực thi tập lệnh PHP?

Hàm exit() trong PHP là một hàm có sẵn dùng để xuất thông báo và kết thúc tập lệnh hiện tại. Hàm exit() chỉ kết thúc việc thực thi tập lệnh.