NextCloud+PHP für Dumme

  • Moin zusammen,


    diese Frage mag sehr dumm sein, da ich online aber nichts wirklich hilfreiches dazu gefunden habe, frage ich mal hier, vielleicht kann mir das ja jemand beantworten.


    Ich habe vor vielen vielen Jahren mal PHP gemacht (da war Version 4 ganz cool) und habe, glaube ich, damals die Sprache auch verstanden. Wir kotzten über max_execution_time, max_upload_size und all die tollen Dinger. Jetzt hab ich zwischenzeitlich kaum mehr PHP gemacht, aber Nextcloud auf meinem Netcup-Webspace installiert, was - mehr oder weniger - gut läuft. Um zu verstehen, was da im Hintergrund abgeht, dieser Thread.


    Es gibt ja so Software wie Nextcloud, die sich, scheinbar, über die o.g. Limits hinwegsetzen kann. Ich kann größere Dateien hochladen als in max_upload_size oder max_post_size o. Ä., wenn ein Download länger dauert als max_execution_time ist das auch nicht weiter schlimm - zumindest scheint es für mich so.


    Wie macht Nextcloud das, wie funktioniert das?


    Viele Grüße
    Matthias

  • Bzgl. max_execution_time: Zum Upload werden grosse Dateien vom Nextcloud-Desktop-Client in Teile zerlegt, die unabhängig voneinander hochgeladen und dann auf dem Server wieder zusammengesetzt werden:

    https://docs.nextcloud.com/ser…apis/WebDAV/chunking.html


    Dann dauern die einzelnen Requests nicht so lange.

    CentOS 7 / nginx / php-fpm / postfix / rspamd / clamav / dovecot / nextcloud running on RS 1000 SSDx4 G8 / VPS 500 G8 / VPS 2000 G8 Plus

  • Schau dir im Browser mal unter den Entwickler-Tools das Netzwerk an, wenn du etwas hochlädst. Dort kann man erkennen, dass der Client (in dem Fall der Browser) die Datei in vielen kleinen Schnipseln hochlädt (ich meine 10 MB pro Schnipsel). Am Ende werden diese Schnipsel dann wieder zu einer Datei zusammengesetzt. Dabei bin ich übrigens schon öfter auf die max_execution_time gestoßen.


    Dieses System wird bei allen Clients von Nextcloud verwendet (Smartphone-App, Desktop-App, Browser, usw.)

  • Vielen Dank schon mal, das würde den Upload erklären. Aber wie funktioniert das mit dem Download bei größeren Dateien? Die rennen dann doch auch in die max_execution_time?

  • Ich habe mir den Code von Nextcloud nicht angeschaut, aber es wäre möglich, dass Nextcloud einen X-Sendfile-Header sendet und danach sofort terminiert. Der Webserver kann diesen Header aufgreifen und die durch den Header angegeben Datei an den Client senden. Damit wäre der Dateiversand unabhängig von PHP.

  • Sehr interessante Frage. Steht mir, fürchte ich, auch noch bevor zu lösen.

    Jedoch nur mit Browser. Java, Flash, ... kommen (für mich) nicht in Frage.

    Kurze Suche "php chunking" und lesen eines Links von 2011 :-/ brachte

    https://code-examples.net/de/q/2559dd

    ... Skript bigupload (404)

    ... tus-Protokoll, das ein HTTP-basiertes Protokoll für fortsetzbare Datei-Uploads ...

    ... uppy ...

    ... plupload ist eine Javascript / PHP-Bibliothek, ... HTML5


    Immerhin schon mal drei Ansätze - ohne Bewertung.

    Bin für weitere Ideen/Vorschäge dankbar.