Tôi không thực sự biết nếu bạn đang cố gắng ước tính hoặc đưa ra phản hồi "trực tiếp" cho người dùng.
Nếu bạn đang ước tính tôi nghĩ bạn chỉ có thể đi tuyến hệ điều hành và thực hiện "exec" (như @kost đề xuất) sẽ cho bạn biết tải hiện tại. Không cần phải lật đổ nó!
Vì vậy, hãy truy cập giải pháp trực tiếp trực tiếp :)!
Trước hết hãy xem ReactPHP (http://reactphp.org/) và sau đó thực hiện luồng của ReactPHP (https://github.com/reactphp/stream). Ý tưởng sẽ là tạo ra một luồng có thể đọc được nơi bạn sẽ đọc khối dữ liệu từ nguồn của bạn (DropBox?) Và như bạn làm, bạn sẽ tiếp tục tính toán thời gian còn lại và ghi nó vào và dòng ghi có thể một Web Socket chẳng hạn.
Dưới đây là một ví dụ nhỏ đọc từ một tập tin địa phương lớn, tính% và bằng văn bản cho stdoud:
<?php
require 'vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
$read = new \React\Stream\Stream(fopen('hugefile.txt', 'r+'), $loop);
$fileStats = fstat($read->stream);
$totalSize = $fileStats['size'];
$chunkSize = $totalSize/100;
$currChunk = 1;
$write = new \React\Stream\Stream(fopen('php://stdout', 'w+'), $loop);
$totalReadBytes = 0;
$read->on('data', function ($data, $read) use ($write, &$totalReadBytes, $totalSize, &$currChunk, $chunkSize) {
$totalReadBytes += strlen($data);
if($totalReadBytes > ($chunkSize * $currChunk)){
$currChunk = ceil(($totalReadBytes/$totalSize)*100);
$write->write(sprintf('%010d',$totalReadBytes).'/'.sprintf('%010d',$totalSize).' - '.$currChunk.'%'.PHP_EOL);
}
});
$loop->run();
Lưu ý rằng tất cả các bạn sẽ cần phải làm là thay đổi đầu vào của dòng có thể đọc được và đầu ra của dòng writabble.
Ngoài ra, bạn có thể dẫn luồng có thể đọc được vào tệp (sau này bạn tải lên youtube) hoặc thậm chí tốt hơn nếu youtube cho phép, chỉ cần đưa nó lên youtube (điều đó thật tuyệt vời: D).
EDIT thêm một số ý kiến của tôi cho visibility:
từ ReactPHP về cơ bản là một bản sao không biết xấu hổ của NodeJS, khái niệm về mã và ý tưởng tôi đã đăng có thể dễ dàng được thực hiện trong NodeJS (mã thậm chí sẽ giống nhau). Với điều này tôi không cố gắng để nói ReactPHP là tồi tệ hơn hoặc tốt hơn :) Tôi chỉ nghĩ rằng bạn có thể đạt được cùng một kết quả với Node và tài liệu của họ là WAY tốt hơn, với ReactPHP bạn sẽ thấy mình đào sâu vào mã để tìm thứ ngoài.
Tôi nghĩ cốt lõi của ReactPHP là đủ ổn định nhưng tôi hiểu mối quan tâm của bạn . Điều đó đang được nói, Nếu tôi, nơi bạn chắc chắn tôi sẽ cố gắng sử dụng NodeJS. Nếu bạn biết những điều cơ bản của JS nó thực tế là cùng một đường cong học tập bạn sẽ có với ReactPHP (nếu không ít hơn, vì có là nhiều tài nguyên hơn cho Node hơn ReactPHP).
Vì vậy, bạn muốn cung cấp phản hồi trực tiếp về tiến trình (có thể là tốc độ, còn lại kb, v.v ...) không? Bởi vì tôi nghĩ ReactPHP sẽ là công cụ phù hợp :) Nếu có, tôi có thể minh chứng một ví dụ nhỏ. Nếu không, nếu tất cả những gì bạn muốn là ước tính dựa trên tải trọng hiện tại, hãy làm những gì @kost nói và đừng đánh lừa nó;) –