Hướng dẫn run exec in background php - chạy thực thi trong php nền

21

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng xử lý một tệp trong nền với lệnh sau, nhưng nó không làm gì cả.

exec["php csv.php $file $user > /dev/null &", $output];

Nếu tôi xóa > /dev/null & thì các quy trình tệp, nhưng không phải trong nền.

exec["php csv.php $file $user", $output];

Bất kỳ ý tưởng?

hỏi ngày 28 tháng 1 năm 2013 lúc 5:30Jan 28, 2013 at 5:30

2

Note:

Nếu một chương trình được bắt đầu với chức năng này, để nó tiếp tục chạy ở chế độ nền, đầu ra của chương trình phải được chuyển hướng đến một tệp hoặc luồng đầu ra khác. Không làm như vậy sẽ khiến PHP bị treo cho đến khi việc thực hiện chương trình kết thúc.

//php.net/manual/en/function.exec.php

so:

exec["php csv.php $file $user > /dev/null &"]; // no $output

Đã trả lời ngày 28 tháng 1 năm 2013 lúc 5:38Jan 28, 2013 at 5:38

Vua vua EmeryEmery King

3,47021 huy hiệu bạc34 huy hiệu đồng21 silver badges34 bronze badges

9

Bạn đã xem xét sử dụng màn hình chưa? Bạn có thể bắt đầu một phiên màn hình chạy trong một quy trình tách ra. Đầu ra sẽ đi đến phiên màn hình, mà bạn có thể gắn lại trong một thiết bị đầu cuối khác trong khi nó vẫn đang chạy.

exec["screen -d -m -S my_php_session csv.php $file $user", $output];

Đã trả lời ngày 11 tháng 10 năm 2015 lúc 0:29Oct 11, 2015 at 0:29

Moodboommoodboommoodboom

5.6852 Huy hiệu vàng38 Huy hiệu bạc44 Huy hiệu đồng2 gold badges38 silver badges44 bronze badges

Ngoài câu trả lời của Emery King, bạn phải sử dụng một cuộc gọi exec[] duy nhất để tiêu diệt một quy trình nền. Lúc đầu, tôi đã có ấn tượng rằng nếu quá trình được đưa vào nền, tôi có thể đi theo cách vui vẻ của mình và giết nó sau này miễn là tôi có ID quy trình, nhưng đó không phải là trường hợp.

Ví dụ:

// Runs the background process for 10 seconds
// and then kills it and allows php to continue
exec['sh -c \'echo $$ > pid; exec long_running_process\' > /dev/null 2>&1 & sleep 10 && kill $[cat pid]'];

// Runs the background process but does not allow
// php to continue until the background process finishes.
exec['sh -c \'echo $$ > pid; exec long_running_process\' > /dev/null 2>&1 &'];
exec[' sleep 10 && kill $[cat pid]']; //  & 1 có nghĩa là stderr được chuyển hướng vào stdout và do đó vào niết bàn.
  • Chung kết & bảo lệnh thực thi trong nền. execute in the background.
  • & nbsp; chúng ta có thể kiểm tra trạng thái của bất kỳ quy trình đang chạy nào với lệnh PS, ví dụ:

    ps -ef

    Vì vậy, để chạy bất kỳ quy trình nền nào từ PHP, chúng tôi chỉ có thể sử dụng chức năng EXEC hoặc shell_EXEC để thực thi bất kỳ lệnh đầu cuối nào và trong lệnh đó, chúng tôi chỉ cần thêm và vào cuối cùng để quá trình có thể chạy ở chế độ nền.

    Dưới đây là việc thực hiện phương pháp trên:

    PHP

    exec["php csv.php $file $user > /dev/null &"]; // no $output
    
    6

    Is

    exec["screen -d -m -S my_php_session csv.php $file $user", $output];
    
    5
    exec["screen -d -m -S my_php_session csv.php $file $user", $output];
    
    6
    exec["screen -d -m -S my_php_session csv.php $file $user", $output];
    
    7

    exec["screen -d -m -S my_php_session csv.php $file $user", $output];
    
    8
    exec["screen -d -m -S my_php_session csv.php $file $user", $output];
    
    9
    // Runs the background process for 10 seconds
    // and then kills it and allows php to continue
    exec['sh -c \'echo $$ > pid; exec long_running_process\' > /dev/null 2>&1 & sleep 10 && kill $[cat pid]'];
    
    // Runs the background process but does not allow
    // php to continue until the background process finishes.
    exec['sh -c \'echo $$ > pid; exec long_running_process\' > /dev/null 2>&1 &'];
    exec[' sleep 10 && kill $[cat pid]']; //  pid; exec long_running_process\' > /dev/null 2>&1 & sleep 10 && kill $[cat pid]'];
    
    // Runs the background process but does not allow
    // php to continue until the background process finishes.
    exec['sh -c \'echo $$ > pid; exec long_running_process\' > /dev/null 2>&1 &'];
    exec[' sleep 10 && kill $[cat pid]']; //  pid; exec long_running_process\' > /dev/null 2>&1 & sleep 10 && kill $[cat pid]'];
    
    // Runs the background process but does not allow
    // php to continue until the background process finishes.
    exec['sh -c \'echo $$ > pid; exec long_running_process\' > /dev/null 2>&1 &'];
    exec[' sleep 10 && kill $[cat pid]']; //  pid; exec long_running_process\' > /dev/null 2>&1 & sleep 10 && kill $[cat pid]'];
    
    // Runs the background process but does not allow
    // php to continue until the background process finishes.
    exec['sh -c \'echo $$ > pid; exec long_running_process\' > /dev/null 2>&1 &'];
    exec[' sleep 10 && kill $[cat pid]']; //  pid; exec long_running_process\' > /dev/null 2>&1 & sleep 10 && kill $[cat pid]'];
    
    // Runs the background process but does not allow
    // php to continue until the background process finishes.
    exec['sh -c \'echo $$ > pid; exec long_running_process\' > /dev/null 2>&1 &'];
    exec[' sleep 10 && kill $[cat pid]']; // 

    Bài Viết Liên Quan

    Chủ Đề