![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 25.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie, poszukuję wskazówek do rozwiązania następującej sytuacji.
Na moim serwerze lądują pliki .zip z programu do obsługi biur nieruchomości. W pierwszym pliku jest cała paczka ofert (zdjęcia+pełny plik XML), zaś w kolejnych już tylko poprawki zawarte w XML oraz poprawione zdjęcia. Chciałbym doprowadzić do sytuacji automatycznej aktualizacji tych plików oraz zmian w xml. Plan mam taki: 1. Stworzyć plik cron o nazwie np. cron-13.php 2. W niego władować:
// nie wiem, czy w ten sposób załapie, że chodzi o wszystkie pliki zip w tym folderze które przyjdą (będą miały różne nazwy) // nie wiem, gdzie umieścić plik cron, jeżeli paczki .zip przechodzą do folderu docelowego 4. Scalenie xml Dalej muszę umieścić komendę zamiany określonych wartości z nowego pliku oferty.xml do starego oferty.xml: Jeżeli w nowym pliku xml znajdzie się <oferta><id>numer_id</id> (jeżeli pokrywają się ID danej oferty) to nadpisz ją, Jeżeli w nowym pliku xml <oferta_usun><id>numer_id</id></oferta_usun> to usuń ją w starym pliku rozpoznając po ID, Jeżeli w nowym pliku xml <zdjecie><id>numer_zdjęcia</id></zdjecie> to zamienia w starym rozpoznając po ID i numerze zdjęcia. (będę wdzięczny za chociaż jeden przykład danej komendy ze skierowaniem do konkretnego folderu -> pliku.) Dodatkowo zastanawiam się nad tym: - czy nie będzie za późno po wcześniejszej komendzie wypakowania - pliki się zamienią, i będzie za późno na komendy które chcę uwzględnić. Będę wdzięczny za jakiekolwiek wskazówki. Pozdrawiam! |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie, poszukuję wskazówek do rozwiązania następującej sytuacji. Na moim serwerze lądują pliki .zip z programu do obsługi biur nieruchomości. W pierwszym pliku jest cała paczka ofert (zdjęcia+pełny plik XML), zaś w kolejnych już tylko poprawki zawarte w XML oraz poprawione zdjęcia. Chciałbym doprowadzić do sytuacji automatycznej aktualizacji tych plików oraz zmian w xml. Plan mam taki: 1. Stworzyć plik cron o nazwie np. cron-13.php 2. W niego władować:
// nie wiem, czy w ten sposób załapie, że chodzi o wszystkie pliki zip w tym folderze które przyjdą (będą miały różne nazwy) // nie wiem, gdzie umieścić plik cron, jeżeli paczki .zip przechodzą do folderu docelowego 4. Scalenie xml Dalej muszę umieścić komendę zamiany określonych wartości z nowego pliku oferty.xml do starego oferty.xml: Jeżeli w nowym pliku xml znajdzie się <oferta><id>numer_id</id> (jeżeli pokrywają się ID danej oferty) to nadpisz ją, Jeżeli w nowym pliku xml <oferta_usun><id>numer_id</id></oferta_usun> to usuń ją w starym pliku rozpoznając po ID, Jeżeli w nowym pliku xml <zdjecie><id>numer_zdjęcia</id></zdjecie> to zamienia w starym rozpoznając po ID i numerze zdjęcia. (będę wdzięczny za chociaż jeden przykład danej komendy ze skierowaniem do konkretnego folderu -> pliku.) Dodatkowo zastanawiam się nad tym: - czy nie będzie za późno po wcześniejszej komendzie wypakowania - pliki się zamienią, i będzie za późno na komendy które chcę uwzględnić. Będę wdzięczny za jakiekolwiek wskazówki. Pozdrawiam! Komenda wykonywana cronem nie musi być plikiem php, możesz zwyczajnie odpalić w cronie: Kod unzip *.zip Bez zbędnego mieszania w to php. To tyczy rozpakowania. Kolejna kwestia to obróbka danych, tutaj już wskazanym jest zastosowanie php. Zwyczajnie parsujesz xml za pomocą DOMDocument. Nowe pliki trzymaj w osobnych folderach niż pliki użytkowe (czyli z danymi z których korzystasz). -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czyli na serwer wrzucasz tylko raz pełną ofertę, a potem dogrywa tylko "patch-e" ?
pokaż jakiś jeden wpis żeby wiedzieć co zaproponować. Bo rozwiązań jest wiele. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 25.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Cytat("b4rt3kk") Komenda wykonywana cronem nie musi być plikiem php, możesz zwyczajnie odpalić w cronie: Kod unzip *.zip Bez zbędnego mieszania w to php. To tyczy rozpakowania. Kolejna kwestia to obróbka danych, tutaj już wskazanym jest zastosowanie php. Zwyczajnie parsujesz xml za pomocą DOMDocument. Nowe pliki trzymaj w osobnych folderach niż pliki użytkowe (czyli z danymi z których korzystasz). Innymi słowy do rozpakowania wystarczy tak? ![]() Co do obróbki danych i DOMDocument, to jeszcze dla mnie czarna magia, ale zaraz biorę się za dokumentację i google. Cytat("Pyton_000) Czyli na serwer wrzucasz tylko raz pełną ofertę, a potem dogrywa tylko "patch-e" ? pokaż jakiś jeden wpis żeby wiedzieć co zaproponować. Bo rozwiązań jest wiele. Dokładnie tak jak mówisz. Oto przykład patcha: (pełna wersja wygląda tak samo, tylko więcej ofert w działach ![]()
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się że chyba najrozsądniejszym rozwiązaniem jest zaimportowanie tego do BazyDanych. Fakt jest z tym trochę roboty ale możesz uprościć to trochę jeżeli nie będziesz potrzebował tych danych poza całym XML'e.
Możesz tak: W BD tworzysz tabele odpowiadające: - oferta (tab, typ,id (id z XML), entry (tutaj w postaci tekstu cały węzeł "oferta" - zdjęcia (id (id z zdjecie), kolejność, entry(j.w. cały węzeł 'zdjęcie' Dlaczego tak? Tworzysz jeden parser który będzie Ci wkładał lub zastępował wpisy (REPLACE INTO) w BD. Mielisz XML tylko raz, a wyszukiwanie w bazie jest bardzo szybkie i nie naraża Cię na problemy z pamięcią. Dodatkowo możesz zrobić eksporter do XML, (pobierasz wszystkie dane i upychasz w pętli) Możesz też użyć SimpleXML ale to tylko jeśli nie cierpisz na brak RAM na serwerze. Będzie to najłatwiejsze rozwiązanie ale i najbardziej kosztowne pod względem zasobów. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:43 |