AJAX a PHP – synchronizace generování PDF

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
AJAX a PHP – synchronizace generování PDF
« kdy: 04. 10. 2016, 10:17:45 »
Ahoj
mam web na kterém je formulář a SVG. Submitem vše odešlu na server ke zpracování.
Server data zpracuje a vytvoři PDF, které pošle do okna klientova prohližeče.
PHP script, který zapisuje soubory z dat poslané ajaxem používá jeden soubor jako kontajner a ten se každým dalším submitem přepíše.

PROBLEM:
odesílané SVG je někdy větší (6MB) a v závisloti na rychlosti klientova uploadu je čas 'relativní' a někdy nastanou situace že do generovaného PDF se dostane předchozí/neaktuální SVG.

poradili by jste mi?... jak synchronizovat proces zapsaní souboru 'scrip1.php' a generování PDF obsahující mimo jiné i SVG 'script2.php'

pro snadné pochopení jsem načtrtl jak jsou procesy navázány nyní.
« Poslední změna: 04. 10. 2016, 22:37:31 od Petr Krčmář »
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


Re:AJAX+PHP- synchronizace
« Odpověď #1 kdy: 04. 10. 2016, 11:05:13 »
nesmis "prepisovat", ale dat si tam nejakou signaturu, treba sess_id + timestamp. a pak to cronem likvidovat kdyz je to starsi nez x.
Děkuji za možnost editace příspěvku.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:AJAX+PHP- synchronizace
« Odpověď #2 kdy: 04. 10. 2016, 11:16:02 »
díky, ale jak ziskam ten 'random name' nově vytvořeného souboru do scriptu, který generuje PDF?
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

jixmHech

Re:AJAX+PHP- synchronizace
« Odpověď #3 kdy: 04. 10. 2016, 13:12:52 »
K čemu je dobré poslat submitem formulář a svg ajaxem zvlášť a potom to synchronizovat k vytvoření jednoho souboru?

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:AJAX+PHP- synchronizace
« Odpověď #4 kdy: 04. 10. 2016, 13:16:56 »
K čemu je dobré poslat submitem formulář a svg ajaxem zvlášť a potom to synchronizovat k vytvoření jednoho souboru?
protože mne lepší metoda nenapadla, nejsem na tyto věci expert
zatím to řeším tak, že do scriptu co generuje PDF jsem dal delay
nechám si rád poradit od zkušenych, jak to dělat lépe
díky
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.


jixmHech

Re:AJAX+PHP- synchronizace
« Odpověď #5 kdy: 04. 10. 2016, 13:38:01 »
OK. Ale pořád tomu nerozumím. Proč to neposíláš v jenom požadavku?

Možná to má být rozdělení do "více vláken"? Tady ale ty procesy o sobě navzájem nevědí. Posunutím čekání na zpracování svg to nejspíš nevyřešíš. Budou chodit různé požadavky s různou dobou zpracování a jsi tam, kde jsi byl

Když uděláš 1 požadavek, tak celý script čeká, než se vyřeší všechny části a pak to pošle.

K tématu paralelního zpracování jsem našel https://php.vrana.cz/paralelni-zpracovani.php.

Víc jsem nehledal. Snad ti to pomůže.
Stejně mě zajímá ta motivace. Já taky žádný expert nejsem, třeba se přiučím (bez ironie)

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:AJAX+PHP- synchronizace
« Odpověď #6 kdy: 04. 10. 2016, 13:43:27 »
OK. Ale pořád tomu nerozumím. Proč to neposíláš v jenom požadavku?

Možná to má být rozdělení do "více vláken"? Tady ale ty procesy o sobě navzájem nevědí. Posunutím čekání na zpracování svg to nejspíš nevyřešíš. Budou chodit různé požadavky s různou dobou zpracování a jsi tam, kde jsi byl

Když uděláš 1 požadavek, tak celý script čeká, než se vyřeší všechny části a pak to pošle.

K tématu paralelního zpracování jsem našel https://php.vrana.cz/paralelni-zpracovani.php.

Víc jsem nehledal. Snad ti to pomůže.
Stejně mě zajímá ta motivace. Já taky žádný expert nejsem, třeba se přiučím (bez ironie)

máš namysli submitnou vše jedním Ajaxem?
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

jixmHech

Re:AJAX+PHP- synchronizace
« Odpověď #7 kdy: 04. 10. 2016, 13:51:48 »
Ano.

A ještě jedna otázka. Jak může mít SVG 6 MB? Je to jen popis křivek odkud kam vedou a jakou mají polohu apod. Je to textový soubor

Jirka

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:AJAX+PHP- synchronizace
« Odpověď #8 kdy: 04. 10. 2016, 14:05:45 »
A ještě jedna otázka. Jak může mít SVG 6 MB? Je to jen popis křivek odkud kam vedou a jakou mají polohu apod. Je to textový soubor
jde o velmi složitou grafiku s několika vrstvy, ktere se daji interaktivně ovládat
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

jixmHech

Re:AJAX+PHP- synchronizace
« Odpověď #9 kdy: 04. 10. 2016, 14:26:40 »
Tak dej vědět pls, jak to dopadlo

none_

Re:AJAX+PHP- synchronizace
« Odpověď #10 kdy: 04. 10. 2016, 14:39:35 »
A nebylo by lepsi nahravat ajaxem jen to SVG? Dat to jako prvni krok formulare. Jakmile to uzivatel vybere, tak spustit nahravani, zobrazit nejakej citlivej progress bar a zakazat odeslani formulare. Mezi tim by mohl uzivatel vyplnovat zbytek. Nahravani na success posle nejaky ID toho SVG. To uz vygenerovat nahodne na serveru (napr. ClientSVG_timestamp.svg). ID pripojim k datum ve formulari (napr. hidden field) a povolim uzivateli odeslat formular. Na serveru diky tomu budu mit jak jistotu, ze uz SVG mam, tak i informaci, kde ji hledat.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:AJAX+PHP- synchronizace
« Odpověď #11 kdy: 06. 10. 2016, 17:57:29 »
Kód: [Vybrat]
A nebylo by lepsi nahravat ajaxem jen to SVG? Dat to jako prvni krok formulare. Jakmile to uzivatel vybere, tak spustit nahravani, zobrazit nejakej citlivej progress bar a zakazat odeslani formulare. Mezi tim by mohl uzivatel vyplnovat zbytek. Nahravani na success posle nejaky ID toho SVG. To uz vygenerovat nahodne na serveru (napr. ClientSVG_timestamp.svg). ID pripojim k datum ve formulari (napr. hidden field) a povolim uzivateli odeslat formular. Na serveru diky tomu budu mit jak jistotu, ze uz SVG mam, tak i informaci, kde ji hledat.

ne to by neslo, protoze formular ma checkboxy, kterymi se to svg interaktivne meni a teprve jeho finalní stav je potreba odeslat
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

ZAJDAN

  • *****
  • 2 078
    • Zobrazit profil
    • E-mail
Re:AJAX a PHP – synchronizace generování PDF
« Odpověď #12 kdy: 06. 10. 2016, 17:59:27 »
napumpoval jsem tedy vsechno do ajaxu, ale server mi vraci chybu:

Kód: [Vybrat]
XMLHttpRequest cannot load http://mujweb/pdf/create-pdf.php. No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://www.mujweb.cz' is therefore not allowed access. The response had HTTP status code 500.
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

jixmHech

Re:AJAX a PHP – synchronizace generování PDF
« Odpověď #13 kdy: 06. 10. 2016, 18:47:14 »
cross-domain request?

AJAX by měl chodit na stejné doméně. To voláte z localhost?

Kit

Re:AJAX a PHP – synchronizace generování PDF
« Odpověď #14 kdy: 06. 10. 2016, 19:40:24 »
Napadlo mě, jak pojmenovat to PDF: Sesbírat vstupní data, provést hash (třeba SHA1) a podle toho to výstupní PDF pojmenovat a ten název poslat klientovi. Při reloadu stejných vstupních dat se to tedy pojmenuje stejně.