Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]CRON gdzie dać plik by był nie widzialny?, gdzie umieścić
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Panowie, macie jakiś pomysł gdzie wstawić plik php do wykonywania cronem by był nie dostępny dla userów, którzy by mogli przypadkiem w niego wejść?

Ten post edytował casperii 4.06.2017, 21:27:32
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Podchwytliwe pytanie...hmmm... moze w:
/sciezka/niedostepna/przez/www/twoj_plik.php
?


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

"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
casperii
post
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Chodziło mi raczej czy można pchać plik do odpalenia poza public_html ?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No a czemu nie? No chyba ze uzywasz crona www, ale to wypadaloby o tym wspomniec na samym poczatku


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

"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
Szado
post
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 4
Dołączył: 30.05.2017

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


Możesz wstawić na pendrive, chyba że pożyczasz komuś.

--
Poza głównym katalogiem serwera.
Go to the top of the page
+Quote Post
casperii
post
Post #6





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@nospor a jakiś pomysł masz odnośnie sytuacji:
Cron wykonuje np. co 10 godzin w pętli np. 10000 aktualizacji rekordów na które oczywiście ustawiam sleep(10) z zewnętrznego serwera poprzez curl, z jakiegoś powodu (np. chwilowa przerwa serwera) przy aktualizacji 5tyś -ego rekordu cron się zatrzymuje(?) i po wznowieniu serwera zaczyna od początku (?) - czy żeby zapobiec takiej sytuacji powinienem sprawdzać na którym polu się zatrzymałem ? i tylko updatować to pole +1 ? co w sytuacji gdy strona curlem się nie wczyta (chwilowa awaria serwera)? robić wtedy exit i nie dopuszczać do aktualizacji rekordów ?
Go to the top of the page
+Quote Post
Neutral
post
Post #7





Grupa: Zarejestrowani
Postów: 286
Pomógł: 46
Dołączył: 10.01.2016

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


Możesz do tego celu wykorzystać transkacje. Funkcje te są dostępne na silniku InnoDB.

https://dev.mysql.com/doc/refman/5.7/en/inn...age-engine.html

Ten post edytował Neutral 4.06.2017, 23:39:25
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tak, musisz zapisywac wszystko co sie poprawnie zrobilo by wiedziec co robic przy nastepnym starcie crona

Cytat
co w sytuacji gdy strona curlem się nie wczyta (chwilowa awaria serwera)? robić wtedy exit i nie dopuszczać do aktualizacji rekordów ?
A to zalezy czy kolejne aktualizacje wymagaja poprawnej poprzedniej. Jak nie to lecisz dalej a ta co sie nie powiodla powtorzy sie przy nastepnym cronie, pod warunkiem ze zrobisz jak napisalem na poczatku


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

"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
casperii
post
Post #9





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@nospor a tak się jeszcze zastanawiam czy nie lepiej by było przy każdym produkcie dodać pole datetime i z każdym jej aktualizacją updatować czas / date.
A w pierwszym zapytaniu pobierać tylko te rekordy gdzie data i czas jest większa od X minut.

Zobacz poniższy kod, da się jakoś z optymalizować, ponieważ jak dam sleep to wywala mi błąd:
Fatal error: Maximum execution time of 180 seconds exceeded

  1. /*pobieram curlem */
  2. $pdo = new db_connect();
  3. $sql = $pdo->prepare('SELECT * FROM `product` WHERE `id` > 0');
  4. $sql->execute();
  5.  
  6.  
  7. while ($row = $sql->fetch()) {
  8.  
  9. curl_setopt($ch, CURLOPT_URL, 'http://www.adres.pl?product_id='.$row['id']);
  10. $store = curl_exec($ch);
  11.  
  12. /* tu wyszukuje co mnie interesuje i wrzucam do zmiennej */
  13.  
  14. try{
  15. $pdo = new db_connect();
  16. $sqlUpd = $pdo->prepare('UPDATE `product` SET /*coś tam updatuje */ WHERE `id` = '.$row['id'].' LIMIT 1');
  17. $sqlUpd->execute();
  18. } catch(PDOException $e) {
  19. echo 'Błąd: ' . $e->getMessage();
  20. }
  21. }
  22. sleep(10);
  23. curl_close($ch);

Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No dales sleep, osiagasz limit czasowy i masz blad. Normalka. Sam masz skrypt konczyc po okreslonym czasie, to nie bedziesz mial bledu


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

"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
trueblue
post
Post #11





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Na Windowsie sleep będzie się wliczał w max_execution_time, na Linuxie nie.


--------------------
Go to the top of the page
+Quote Post
casperii
post
Post #12





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Panowie @nospor @trublue, wpadłem jeszcze na pomysł, by w pierwszym zapytaniu zrobić limit np 30 i pobierać tylko te rekordy gdzie czas jest późniejszy niż X minut i przy updatowaniu zapisywać date i czas a wsio puścić cronem co 10 minut. Dobre rozwiązanie ?
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Moze byc.


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

"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

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 Aktualny czas: 22.08.2025 - 00:58