Added progress

This commit is contained in:
2026-06-04 23:23:31 +01:00
parent e63eb790e7
commit 34d8014bac
3 changed files with 38 additions and 2 deletions
+13 -1
View File
@@ -4,6 +4,9 @@ class ArchiveJob extends Job {
public $document;
private $currentFile;
private static $me;
public function run() {
$doc = new Document($this->document);
@@ -32,7 +35,9 @@ class ArchiveJob extends Job {
$this->status("Uploading " . $r->filename());
$r->archived = "P";
$r->save();
Archive::upload($r->getPDF(), $id, $r->filename(), $meta);
$this->currentFile = $r->filename();
ArchiveJob::$me = $this;
Archive::upload($r->getPDF(), $id, $r->filename(), $meta, [$this, "progress"]);
$r->refresh();
$r->archived = "Y";
$r->save();
@@ -62,4 +67,11 @@ class ArchiveJob extends Job {
$this->finish();
}
public function progress($ch, $todl, $dl, $toul, $ul) {
if ($toul > 0) {
$txt = sprintf("Uploading %s: %d%%", $this->currentFile, $ul * 100 / $toul);
$this->status(sprintf("Uploading %s: %d%%", $this->currentFile, $ul * 100 / $toul));
}
}
}
+4 -1
View File
@@ -29,7 +29,7 @@ class Archive {
throw new Exception("Error $resp processing tasks");
}
static function upload(File $file, $identifier, $filename, $metadata = []) {
static function upload(File $file, $identifier, $filename, $metadata = [], ?Callable $callback = null) {
$headers = [];
$headers[] = "Authorization: LOW " . Config::get("ARCHIVE_KEY") . ":" . Config::get("ARCHIVE_SECRET");
@@ -58,6 +58,9 @@ class Archive {
$req = new HTTPRequest();
if ($callback) {
$req->setCallback($callback);
}
$resp = $req->put("https://s3.us.archive.org/" . $identifier . "/" . $filename, $file->path(), $headers);
if ($resp == 200) {
+21
View File
@@ -10,6 +10,8 @@ class HTTPRequest {
public $connect_timeout = 2;
public $transfer_timeout = 300;
public $callback = null;
public $ch = null;
public function __construct() {
@@ -29,6 +31,11 @@ class HTTPRequest {
curl_setopt($this->ch, CURLOPT_HEADER, true);
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true);
if ($this->callback) {
curl_setopt($this->ch, CURLOPT_XFERINFOFUNCTION, $this->callback);
curl_setopt($this->ch, CURLOPT_NOPROGRESS, false);
}
$this->status = 0;
$response = curl_exec($this->ch);
@@ -78,6 +85,11 @@ class HTTPRequest {
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $data);
if ($this->callback) {
curl_setopt($this->ch, CURLOPT_XFERINFOFUNCTION, $this->callback);
curl_setopt($this->ch, CURLOPT_NOPROGRESS, false);
}
$this->status = 0;
$response = curl_exec($this->ch);
@@ -130,6 +142,11 @@ class HTTPRequest {
curl_setopt($this->ch, CURLOPT_INFILE, $fh);
curl_setopt($this->ch, CURLOPT_INFILESIZE, filesize($file));
if ($this->callback) {
curl_setopt($this->ch, CURLOPT_XFERINFOFUNCTION, $this->callback);
curl_setopt($this->ch, CURLOPT_NOPROGRESS, false);
}
$this->status = 0;
$response = curl_exec($this->ch);
@@ -161,4 +178,8 @@ class HTTPRequest {
return $this->status;
}
public function setCallback(Callable $callback) {
$this->callback = $callback;
}
}