Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Otwieranie plików
pawel06281990
post 19.09.2021, 23:33:55
Post #1





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Witam,

Mam problem ze skryptem do otwierania .csv

Ale cały czas dostaje komunikat na adres e-mail

  1. Nie można odczytać zawartości katalogu: /home/twoj-host/web/test.twoj-host.eu/public_html/fara-cmentarz-online/


A tak wygląda cały kod

  1. <?php
  2.  
  3. function fileNameExtension ($fileName) {
  4. $elements = explode ('.', $fileName);
  5. if (!$elements or count ($elements)==1) return '';
  6. return strtolower ($elements[count($elements)-1]);
  7. }
  8. require_once (WPNW_DIR.'/inc/zmarli_sendmail.php');
  9.  
  10. $sourceDir = ZMARLI_URL_PLIK;
  11. $pathHandle = opendir ($sourceDir);
  12. var_dump(!$pathHandle);
  13. if (!$pathHandle) {
  14.  
  15. echo powiadomienia_zapis('System','Nie można odczytać zawartości katalogu: '.$sourceDir.'<br/>Ładowanie nie powiodło się',time(),1);
  16. }else{
  17. global $wpdb;
  18. $plik_template_data = $wpdb->get_row("
  19. SELECT template_key, template_format, template_active, template_sender_name, template_sender_email
  20. FROM ".EMAIL_TEMPLATES_TABLE."
  21. WHERE template_key = 'Wgranie do bazy'
  22. LIMIT 1");
  23. if($plik_template_data){
  24. if ($plik_template_data->template_active == "1") {
  25. sendemail_template_pliki('Wgranie do bazy', $info_dane, $opinion_errors,"", $tytul, $messenger, get_option('blogname') , get_option('admin_email'), $plik_template_data->template_sender_name, $plik_template_data->template_sender_email,"");
  26.  
  27. }else{
  28.  
  29. sendemail(get_option('blogname') , get_option('admin_email'), get_option('blogname') , get_option('admin_email'), 'Komunikat o błędzie w trakcie obsługi bazy cmentarza na stronie WWW', 'Nie można odczytać zawartości katalogu: '.$sourceDir.'','html');
  30.  
  31.  
  32. }
  33.  
  34. }else{
  35. sendemail(get_option('blogname') , get_option('admin_email'), get_option('blogname') , get_option('admin_email'), 'Komunikat o błędzie w trakcie obsługi bazy cmentarza na stronie WWW', 'Nie można odczytać zawartości katalogu: '.$sourceDir.'','plain');
  36.  
  37.  
  38. }
  39.  
  40. return;
  41.  
  42.  
  43. }
  44. $clear = (isset ($_GET['clear']) and $_GET['clear']==1);
  45. // Reset bazy
  46. if ($clear) {
  47. // SKASOWANIE CAŁOŚCI
  48. global $wpdb;
  49. $wpdb->delete(WYSZUKIWARKA_TABLE) or sendemail(get_option('blogname') , get_option('admin_email'), get_option('blogname') , get_option('admin_email'), 'Komunikat o błędzie w trakcie obsługi bazy cmentarza na stronie WWW', 'Nie można skasować danych: '.$query.'','html');
  50.  
  51. }
  52. $total = 0;
  53.  
  54. // APPEND BLANK -> REPLACE MOŻE SPOWODWAĆ POWSTANIE 2 PLIKÓW DLA TEGO SAMEGO ID - TRZEBA TE PLIKI TAK POSORTOWAĆ
  55. // ŻEBY NAJPIERW PRZETWARZAĆ PLIKI STARSZE, A POTEM CORAZ MŁODSZE
  56. // PLIKI TRZEBA WIĘC NAJPIERW POSORTOWAĆ WG. FUNKCJI FILEMTIME, a dopiero potem przetwarzać
  57.  
  58. while (false !== ($file = readdir($pathHandle)))
  59. if (is_file ($sourceDir.'/'.$file)) {
  60. $localOrderInSession = substr ($file, 0, 6);
  61. $timeSignature = substr ($file, 6, 16);
  62. $userID = substr ($file, 22, 5);
  63. $key = $timeSignature.$localOrderInSession.$userID;
  64. $files[$key] = $file;
  65. }
  66.  
  67. if (!isset ($files) or count ($files)==0) {
  68. if (isset ($_GET['silent_mode']) and $_GET['silent_mode']=='0')
  69. echo powiadomienia_zapis('System','Ładowanie zostało przeprowadzone, ale nie znaleziono żadnych danych do wczytania',time(),1);
  70. return ;
  71. }
  72. ksort ($files);
  73. closedir($pathHandle);
  74. foreach ($files as $file) {
  75. $path = $sourceDir.'/'.$file;
  76. if (is_file ($path) and fileNameExtension($path)==WYSZUKIWARKA_TABLE) $total += loadBurieds($path);
  77.  
  78. }
  79.  
  80. if (isset ($_GET['silent_mode']) and $_GET['silent_mode']=='0')
  81. echo powiadomienia_zapis('System','Ładowanie danych zostało wykonane. Liczba zmian:'.$total.'',time(),2);
  82.  
  83.  
  84.  
  85. function unpackText ($text) {
  86. $content = trim (str_replace ('&pipe', '|', $text));
  87. return $content;
  88. }
  89.  
  90.  
  91.  
  92. function loadBurieds ($path) {
  93. $contentArray = file (ZMARLI_URL_PLIK.'/'. basename($path));
  94. $total = 0;
  95. unlink ($path);
  96. foreach ($contentArray as $line) {
  97. $info = explode ('|', $line);
  98. // faraID, cmentarz, nazwisko, imie, data ur., data śmierci, P1..P8
  99. $id = intval (trim ($info [0]));
  100. if ($id==0) continue;
  101. $imie = unpackText ($info [1]);
  102. $nazwisko = unpackText ($info [2]);
  103. $data_urodzienia = unpackText ($info [3]);
  104. $data_smierci = unpackText ($info [4]);
  105. $sektor = unpackText ($info [5]);
  106. $rzad = unpackText ($info [6]);
  107. $pole_grobu = unpackText ($info [7]);
  108. $oplata_pokladne = unpackText ($info [8]);
  109. $zdjecia = unpackText ($info [9]);
  110. if ($id<0) {
  111. global $wpdb;
  112. $wpdb->delete(WYSZUKIWARKA_TABLE, array('Id' => -$id))or sendemail(get_option('blogname') , get_option('admin_email'), get_option('blogname') , get_option('admin_email'), 'Komunikat o błędzie w trakcie obsługi bazy cmentarza na stronie WWW', 'Nie można skasować danych: '.$query.'','html');
  113.  
  114. } else {
  115. global $wpdb;
  116. $wpdb->delete(WYSZUKIWARKA_TABLE, array('Id' => $id)) or sendemail(get_option('blogname') , get_option('admin_email'), get_option('blogname') , get_option('admin_email'), 'Komunikat o błędzie w trakcie obsługi bazy cmentarza na stronie WWW', 'Nie można skasować danych: '.$query.'','html');
  117.  
  118. }
  119. $total++;
  120. if ($id>0) {
  121. global $wpdb;
  122. $wpdb->insert(WYSZUKIWARKA_TABLE, array(
  123. 'Id' => $id,
  124. 'imie' => $imie,
  125. 'nazwisko' => $nazwisko,
  126. 'data_urodzienia' => $data_urodzienia,
  127. 'data_smierci' => $data_smierci,
  128. 'sektor'=> $sektor, 'rzad'=> $rzad,
  129. 'pole_grobu'=> $pole_grobu,
  130. 'oplata_pokladne'=> $oplata_pokladne,
  131. 'zdjecia' => $zdjecia )) or sendemail(get_option('blogname') , get_option('admin_email'), get_option('blogname') , get_option('admin_email'), 'Komunikat o błędzie w trakcie obsługi bazy cmentarza na stronie WWW', $query,'html');
  132.  
  133. $total++;
  134. }
  135. }
  136. return $total;
  137. }
  138.  
  139.  



Bo chce żeby za każdym razem gdy użytkownik wchodzi sprawdzało mi folder pliki_sql, bo próbowałem zrobić ze o danej godzinie będzie sprawdzało tak wygląda moje wywołanie

  1. if(get_option('czas_aktywuj' < date("H:i:s", time())){
  2. //zawartość pliku
  3. }


Ale nie dział nie wiem czemy.

Proszę pomuszcie mi proszę

Go to the top of the page
+Quote Post
nospor
post 20.09.2021, 09:59:54
Post #2





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Wyglada na to ze php nie ma dostepu do
/home/twoj-host/web/test.twoj-host.eu/public_html/fara-cmentarz-online/

zmien prawa dostepu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
pawel06281990
post 20.09.2021, 12:04:57
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 20.09.2021, 10:59:54 ) *
Wyglada na to ze php nie ma dostepu do
/home/twoj-host/web/test.twoj-host.eu/public_html/fara-cmentarz-online/

zmien prawa dostepu


Ale prawa dodałem 777
Go to the top of the page
+Quote Post
DNMX
post 21.09.2021, 12:16:48
Post #4





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 18.09.2021

Ostrzeżenie: (0%)
-----


Jak i gdzie masz ustawioną stałą ZMARLI_URL_PLIK?
Go to the top of the page
+Quote Post
pawel06281990
post 21.09.2021, 21:04:38
Post #5





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


W katalogu głównym wtyczki.


p.s Zadziałało mi ale mam kolejny problem przy odświeżeniu strony i przy dodawaniu rekordów do bazy dostaje komunikat Przekroczony czas odpowiedzi serwera i nie wiem jak zrobić żeby kliki z csv ładowały się bez takiego komunikatu.

Ten post edytował pawel06281990 21.09.2021, 21:54:53
Go to the top of the page
+Quote Post
gino
post 22.09.2021, 09:19:43
Post #6





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Wydłuż czas wykonywania skryptu w set_time_limit jeśli masz tam dostęp.
Dlaczego nie używasz funkcji zdefiniowanych do plików csv fgetcsv(), fputscv()?
Jeżeli pliki są za duże to je podziel na mniejsze podczas tworzenia (zapisu) i zaczytuj z nich po kolei.

Zwracałem Ci uwagę na użycie global. Jeśli używasz to znaczy, że Twój kod jest nieoptymalny pod wieloma względami. A już kilkakrotne użycie global tej samej zmiennej czy obiektu w jednej funkcji czy w strukturze kodu to już dla mnie kuriozum.

Ten post edytował gino 22.09.2021, 09:28:51
Go to the top of the page
+Quote Post
pawel06281990
post 22.09.2021, 10:05:34
Post #7





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Jeśli nie użyje global to mi nie działa zapis do bazy i wywala błąd na $wpdb; a już poprawiłem swój skrypt.
Go to the top of the page
+Quote Post
gino
post 22.09.2021, 10:28:56
Post #8





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Jak się już uparłeś to daj global na początku skryptu a w funkcji zrób:
Kod
function loadBurieds ($path, $wpdb)
{
...
}


i usuń z tej niej wszystkie inne global.

Ten post edytował gino 22.09.2021, 10:29:14
Go to the top of the page
+Quote Post
pawel06281990
post 22.09.2021, 12:39:36
Post #9





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Ok poprawiłem wedle wskazówek ale niepokoi mnie ten komunikat.

Gateway Timeout

The gateway did not receive a timely response from the upstream server or application.

dałem set_time_limit(); to na początku pliku i wpisałem w () 18000 ale nadal mam ten komunikat.
Go to the top of the page
+Quote Post
gino
post 22.09.2021, 13:25:54
Post #10





Grupa: Zarejestrowani
Postów: 319
Pomógł: 52
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Zobacz jeszcze to
https://stackoverflow.com/questions/2047173...om-the-upstream
Go to the top of the page
+Quote Post
pawel06281990
post 26.09.2021, 12:42:55
Post #11





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 10.01.2014

Ostrzeżenie: (0%)
-----


Nic ro nie dało cały czas po zmianie w php.ini i dodanie do pliku
  1. ini_set('default_socket_timeout', 18000);
mam ten sam błąd.

a do bazy muszę w grać 11034 i mogę być ich więcej.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 13:37