Hướng dẫn how do i kill a php process? - làm thế nào để tôi giết một quy trình php?

Nếu tôi hiểu chính xác bài đăng của bạn, bạn đã chạy một kịch bản từ PHP-CGI thông qua bảng điều khiển của bạn rằng có lẽ có gì đó không ổn và spam máy chủ của API.

Vì vậy, có nhiều khả năng có thể gây ra vấn đề này. Trước hết, khi bạn đang thực thi tập lệnh PHP chỉ cần mua "Php scriptName.php", nó chờ tập lệnh PHP kết thúc và sau đó quay trở lại đầu vào phiên chính của bạn. Nếu bạn đóng vỏ của mình trong quá trình thực hiện tập lệnh, nó sẽ dừng hoạt động của nó. Trừ khi bạn bắt đầu PHP của mình bằng "màn hình" hoặc "&" không có một khả năng nào mà tập lệnh tiếp tục chạy.

Bây giờ hãy phân tích hoạt động của nó. Nếu tập lệnh đi vào một vòng lặp vô hạn, hãy mở một ổ cắm, điều đó có nghĩa là nó sẽ cố gắng kết nối với máy chủ của API như hàng trăm lần mỗi giây. Điều đó có nghĩa là máy chủ đích sẽ cấm bạn từ 10 giây đầu tiên. Một cái gì đó bạn chưa làm rõ với chúng tôi là, tỷ lệ lưu lượng của các yêu cầu kết nối đến Target Server. Hỗ trợ của API có cung cấp cho bạn thêm thông tin về điều đó không? Và nếu có những gì họ đã nói.

Phải nói rằng các VPS của bạn vẫn gửi yêu cầu đến các máy chủ, tôi sẽ đề nghị bạn làm

ps -a xa | GREP PHP

và kiểm tra các phiên bản PHP đang chạy. Bạn có thể tai nạn bắt đầu một tập lệnh PHP trong nền bằng cách thêm A & vào cuối dòng. Nếu lệnh này trả về một cái gì đó. Tìm PID của ứng dụng và chấm dứt nó bằng lệnh sau

Giết -9 PID

Nếu điều đó không hoạt động, hãy khởi động lại VPS của bạn và hỏi họ nếu nó vẫn gửi cho họ các yêu cầu kết nối (điều mà hiện tại không thể và điều đó có nghĩa là tường lửa của họ đặt các gói của bạn ở chế độ chậm (có nghĩa là nó xếp hàng với độ trễ đối với máy chủ của họ ))

Tôi đang phát triển một số tập lệnh PHP trên một máy chủ chia sẻ Namecheap. Tôi đã vô tình tạo ra một vòng lặp dường như tiếp tục vô thời hạn (hoặc trong một thời gian rất dài), vì vậy bây giờ tôi đang cố gắng giết nó bằng SSH.

Tôi đã xem một danh sách các quy trình chạy với top, tìm thấy tập lệnh PHP sai và cố gắng giết nó bằng kill. Tuy nhiên, sau khi tôi giết nó bằng lệnh này, khi tôi thử sử dụng ps, nó vẫn đang chạy!

Kết quả của ps:

   PID TTY      STAT   TIME COMMAND
819520 ?        S      0:00 /usr/bin/php /my/php/file.php

Tôi đã cố gắng giết chết quá trình này nhiều lần, nhưng nó sẽ không chết!

SSH bị hạn chế, vì vậy tôi không thể sử dụng các lệnh như

kill $(ps aux | grep '[p]hp' | awk '{print $2}')
1. Tôi làm gì??!

Quan trọng: Điều này nên được sử dụng trong trường hợp khẩn cấp. & NBSP;This should be used in case of emergency only. 

Chỉ một dòng…

Để tiêu diệt tất cả các quy trình PHP

kill $(ps aux | grep '[p]hp' | awk '{print $2}')

Để tiêu diệt tất cả các quy trình nginx

kill $(ps aux | grep '[n]ginx' | awk '{print $2}')

Để tiêu diệt tất cả các quy trình MySQL

kill $(ps aux | grep '[m]ysql' | awk '{print $2}')

Bạn cũng có thể giết bất kỳ loại quy trình nào khác. Chỉ cần đảm bảo bạn thay thế ____ 12 & nbsp; với tên của quá trình đó. Hãy nhớ giữ chữ cái đầu tiên trong khung.

Tôi rất mới sử dụng SSH và đang gặp khó khăn trong việc tìm cách xem và tiêu diệt các quy trình PHP đang chạy.

Khi tôi nói "các quy trình PHP", ý tôi là các tệp PHP được bắt đầu thông qua trình duyệt, nhưng điều đó vẫn tiếp tục chạy khi chúng được cho là dừng lại.

Tôi đã thử điều này:

ps aux | grep php

Nhưng không có bất kỳ kết quả nào, mặc dù tôi biết các tệp đang chạy.

Làm thế nào tôi có thể xem các tệp đang chạy và sau đó giết chúng một cách có chọn lọc (hoặc giết tất cả chúng)?

Hỏi ngày 22 tháng 1 năm 2014 lúc 23:50Jan 22, 2014 at 23:50

HTOP có thể được sử dụng để xem các quy trình và giết chúng một cách có chọn lọc:

sudo apt-get install htop

Như Ckujau đã nói, nó phụ thuộc vào thiết lập của bạn, nhưng thông thường, một quy trình PHP mới được Apache sinh ra và sống trong suốt thời gian yêu cầu. Trong HTOP, kiểm tra Apache trong khi đưa ra yêu cầu. Một quá trình PHP nên bắt đầu. Nếu nó tồn tại, bạn có thể chọn và tiêu diệt nó.

Dưới đây là ảnh chụp màn hình HTOP hiển thị các quy trình PHP-FPM. PHP-FPM duy trì một nhóm các quy trình PHP dài, có thể được sử dụng lại cho nhiều yêu cầu.

Lưu ý 'HTOP' là phiên bản 'Top' thân thiện với người dùng hơn.

Xem thêm HTOP được giải thích: https://peteris.rocks/blog/htop/

Hướng dẫn how do i kill a php process? - làm thế nào để tôi giết một quy trình php?

Đã trả lời ngày 23 tháng 1 năm 2014 lúc 1:21Jan 23, 2014 at 1:21

MarkmarkMark

1863 Huy hiệu Đồng3 bronze badges

3

"Tệp PHP", đó là các tệp chương trình kết thúc trong

kill $(ps aux | grep '[p]hp' | awk '{print $2}')
3 có thể không hiển thị với ps. Nhưng ps có thể hiển thị máy móc sẽ lần lượt chạy các tệp
kill $(ps aux | grep '[p]hp' | awk '{print $2}')
3 đó. Tùy thuộc vào thiết lập của bạn, điều này có thể được quản lý thông qua FAST-CGI hoặc MOD_PHP hoặc thậm chí PHP-FPM. Nếu bạn sử dụng
kill $(ps aux | grep '[p]hp' | awk '{print $2}')
7, thì sẽ không có "quy trình PHP" nào có thể nhìn thấy cho ps. Bạn vẫn có thể xem liệu động cơ PHP của bạn có được sử dụng bằng cách sử dụng
kill $(ps aux | grep '[p]hp' | awk '{print $2}')
9:

$ lsof -ln
[...]

Đã trả lời ngày 23 tháng 1 năm 2014 lúc 0:22Jan 23, 2014 at 0:22

Hướng dẫn how do i kill a php process? - làm thế nào để tôi giết một quy trình php?

Ckujauckujauckujau

6334 Huy hiệu bạc13 Huy hiệu Đồng4 silver badges13 bronze badges

Làm thế nào để bạn kết thúc một quá trình PHP?

Hàm thoát () trong PHP là một hàm sẵn có được sử dụng để xuất thông báo và chấm dứt tập lệnh hiện tại. Hàm thoát () chỉ chấm dứt việc thực thi tập lệnh. Các hàm tắt và phá hủy đối tượng sẽ luôn được thực thi ngay cả khi hàm thoát () được gọi.exit() function in PHP is an inbuilt function which is used to output a message and terminate the current script. The exit() function only terminates the execution of the script. The shutdown functions and object destructors will always be executed even if exit() function is called.

Làm thế nào giết tất cả các quy trình PHP trong Linux?

Bạn chỉ cần một dòng mã ...
Để tiêu diệt tất cả các quy trình MySQL: Giết $ (ps aux | grep '[m] ysql' | awk '{in $ 2}').
Để tiêu diệt tất cả các quy trình nginx: tiêu diệt $ (ps aux | grep '[n] ginx' | awk '{in $ 2}').
Để tiêu diệt tất cả các quy trình PHP: Giết $ (ps aux | grep '[p] hp' | awk '{in $ 2}').

Làm cách nào để dừng máy chủ PHP chạy?

Để dừng máy chủ, lệnh máy chủ PHP: Dừng dự án có thể được thực thi tương tự.PHP Server: Stop project command can be executed likewise.

Làm cách nào để dừng tập lệnh PHP chạy trong nền?

Bạn có thể giết quá trình Apache đang chạy.Hãy thử chạy một cái gì đó như dừng Apachectl và sau đó apachectl bắt đầu để bắt đầu sao lưu.Điều này sẽ giết máy chủ của bạn trong một khoảng thời gian nhưng nó cũng sẽ đảm bảo rằng bất kỳ quy trình nào bị mắc kẹt trên tập lệnh đó sẽ biến mất.apachectl stop and then apachectl start to start it back up. This will kill your server for a period of time but it will also make sure that any processes stuck on that script will go away.