2011-09-30 39 views
7

Tôi có một kịch bản PHP mà chúng tôi chạy mỗi vài phút thông qua một mục nhập cron, và bây giờ và sau đó (khoảng một lần một tuần) thay vì kết thúc bình thường, nó vẫn chạy, ăn 100% lõi CPU (tôi giả sử, lặp vô hạn)Có thể đính kèm trình gỡ rối vào tiến trình PHP đang chạy không?

Nhìn vào mã và "suy nghĩ" về nó, tôi không thể tìm thấy bất kỳ lý do nào cho điều này xảy ra, nhưng nó có. Cho đến nay, khi tôi nhận được 3 hoặc nhiều hơn những người tôi giết chúng, và giải quyết vấn đề CPU, nhưng tôi muốn làm một cái gì đó về điều này ...

Có cách nào để đổ một quá trình, hoặc đính kèm với nó bằng trình gỡ lỗi để tôi có thể biết một cái gì đó, bất cứ điều gì về những gì nó đang làm? (Chỉ có dòng PHP của nó sẽ được giúp đỡ rất lớn). Tôi không quan tâm nếu quá trình này chết khi tôi đổ, hoặc bất cứ điều gì.

Đây là một tập lệnh PHP, chạy từ dòng lệnh, trong máy CentOS 5.6, và tôi là một noob lớn khi nói đến * nix, vì vậy nếu bạn có thể chỉ cho tôi một số hướng dẫn cho núm vú giả tuyệt vơi.

Cảm ơn bạn! Daniel

+1

Vâng, đó là: http://dirac.org/linux/gdb/06-Debugging_A_Running_Process.php (nhưng đây có thể không phải là trình gỡ lỗi bạn đang tìm kiếm). – hakre

Trả lời

3

Không có cách nào tôi biết là đính kèm trình gỡ rối vào quy trình PHP chưa được chuẩn bị cụ thể với phần mở rộng gỡ lỗi PHP (chẳng hạn như xdebug). Tuy nhiên, bạn có thể đoán được những gì đang diễn ra bằng cách sử dụng tiện ích đa năng hơn strace, có thể cung cấp một dấu vết của các cuộc gọi hệ thống đang được chạy bởi một tiến trình. Điều này sẽ chỉ cho bạn biết những gì các cuộc gọi hệ thống đang được thực hiện, nhưng điều này có thể là đủ (tùy thuộc vào bối cảnh) để xác định những gì đang xảy ra anyway.

Các vấn đề liên quan