/ / füge variable Sekunden zur Zeit foreach Schleife hinzu - php, date, datetime, time

Fügen Sie der foreach-Schleife variable Sekunden hinzu - php, date, datetime, time

Ich baue eine Warteschlange, um etwas zu generieren, und ich möchte, dass es für Benutzer sichtbar ist, um zu sehen, wie lange es dauern wird, bis die Generation fertig ist.

Also habe ich eine geschätzte Zeit, die es braucht, um zu generierenetwas, aber das ist eine Variable, weil es irgendwo zwischen 5-120 Sekunden liegen kann. Und jetzt muss ich die Variable Zeit zu der Tageszeit hinzufügen und eine Schleife machen, weil die Warteschlange mehr Werte hat.

Also zum Beispiel brauche ich das:

Objekt 1 - Geschätzte Generationszeit: 15 Sek. - 09:00:15

Objekt 2 - Geschätzte Generationszeit: 20 Sek. - 09:00:35

Objekt 3 - Geschätzte Generationszeit: 10 Sek. - 09:00:45

Und so weiter..

Ich habe das schon probiert:

$my_time = date("h:i:s",time());
$seconds2add = $estimated_time;

$new_time= strtotime($my_time);
$new_time+=$seconds2add;

echo date("h:i:s",$new_time);

Und:

$time = date("m/d/Y h:i:s a", time() + $estimated_time);

Es schleift, aber beide geben mir diese Ausgabe:

Objekt 1 - Geschätzte Generationszeit: 15 Sek. - 09:00:15

Objekt 2 - Geschätzte Generationszeit: 20 Sek. - 09:00:20

Objekt 3 - Geschätzte Generationszeit: 10 Sek. - 09:00:10

Also, wie kann ich es Schleife machen, dass es funktioniert?

Edit: Das ist meine Schleife

$this_time = date("h:i:s",time());
$my_time = $this_time;
$num = 1;
foreach($orders as $order) {
echo "<tr>"
. "<td>".($num++)."</td>"
. "<td>". $order->url ."</td>"
. "<td>". $order->product_desc ."</td>"
. "<td>". $order->size ." cm</td>"
. "<td>". $order->estimated_time ." sec</td>";

$seconds2add = $order->estimated_time;
$my_time= strtotime($my_time);
$my_time+=$seconds2add;
echo "<td>". date("h:i:s",$my_time) . "</td>"
. "</tr>";
}

Antworten:

2 für die Antwort № 1

Es kann hilfreich sein, Ihren Loop-Code zu zeigen, aber hier ist die allgemeine Idee, was Sie tun sollten:

$current_time = time(); // seconds since unix epoch
echo "Start: " . date("h:i:s") . PHP_EOL;

while($you_do_stuff == true) {
// do stuff
$now = time();
$time_taken = $now - $current_time;
echo $time_taken . " seconds to process: " . date("h:i:s", $now) . PHP_EOL;

// set current time to now
$current_time = $now;
}

echo "Finished: " . date("h:i:s");

Bearbeiten: Hier ist ein Beispiel mit einer Reihe zufälliger "geschätzter Zeiten" in Sekunden:

// ... in seconds
$estimated_times = array(
5,
20,
35,
110
);

$current_time = time(); // seconds since unix epoch
echo "Start: " . date("h:i:s") . PHP_EOL;

foreach($estimated_times as $estimated_time) {
// add estimated time to current time (this increases each loop)
$current_time += $estimated_time;
// output estimated time and finish time
echo "Estimated time: " . $estimated_time . " seconds: " . date("h:i:s", $current_time) . PHP_EOL;
}

Demo