Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam,
Mam takie dwie sprawy,
czy można wydłużyć wykonywanie pętli while ( np aby każdy krok miał 10 sekundowa przerwę? )
Wykonuje zapytanie do bazy danych - dane wykonywane są standardowo za pomocą while'a
ale zaszła potrzeba aby kolejny rekord sprawdzony został dopiero po 10-ciu sekundach.
Druga sprawa to php. Pamiętacie paramert w php.ini odpowiadający za długie wykonywanie skryptów?
Chodzi o to że skrypt może się wykonywac z 20 minut. Tak zeby nie przerwało mi pracy przez jakiś zbyt nisko
ustawiony parametr a nie pamiętam który dokładnie za to odpowiadał.
pozdrawiam
Offline
1. sleep
2. max_execution_time
3. Jest taka fajna strona, nazywa się php.net, naprawdę uważasz że to forum jest interfejsem do tej strony?
Offline
Ad. 1 [url]http://php.net/manual/en/function.sleep.php[/url]
Offline
długie skrypty, jeśli jest taka możliwość, lepiej podzielić na krótsze segmenty i odpalać kawałkami z crona
Offline
Mistrzu, uświadom nas maluczkich, jako to z crona odpalić cokolwiek co 10 sekund...
BTW od dawna jestem przekonany że tzw. "programiści PHP" mają pewne problemy z logicznym myśleniem... I jakoś wszyscy mi udowadniają że mam rację.
Offline
20 minut wykonywania skryptu można spokojnie podzielić i odpalić z crona
Ostatnio edytowany przez woowoowoo (2017-07-13 15:35:30)
Offline
Właśnie utwierdziłeś mnie w moim przekonaniu o jakości myślenia tzw. "programistów PHP".
Offline
dobry argument i niezły wkład do tematu.. ale może nie róbmy już OT?
Offline
[quote=ethanak]Mistrzu, uświadom nas maluczkich, jako to z crona odpalić cokolwiek co 10 sekund...
BTW od dawna jestem przekonany że tzw. "programiści PHP" mają pewne problemy z logicznym myśleniem... I jakoś wszyscy mi udowadniają że mam rację.[/quote]
Najkrótszy dowcip programisty świata? Programista php.
Ostatnio próbuje zastąpić takie cudaki tym: http://supervisord.org/configuration.html
Offline
Mistrzu, uświadom nas maluczkich, jako to z crona odpalić cokolwiek co 10 sekund...[/quote]
Zaschedulować co minutę odpalanie skryptu, w którym zabudowany jest mechanizm odpalania innego skryptu co 10 sekund
coś w styluKod:
#!/bin/bash count=0; while [ $count -lt 5] ;do bash ~/właściwy_skrypt & sleep 10 $((count++)) donepisane z czachy więc moze nie działać, ale ideę rozumiecie xD
Offline
@ethanak, myślisz, że jesteś guru programowania i wszystko co tobie się nie podoba to jest debilne i chore umysłowo. takich ludzi jak ty NIE TRAWIE! A jeżeli chodzi o crona to proszę bardzo:
*/5 * * * * /home/.cronjobs/statistics.php all 2> /stat.log
tam niema żadnego skryptu który uruchamia kolejny skrypt. Wystarczy w pierwszej linijce napisać jaki parser ma się uruchomić, nota bene tak samo robi się w ... Bashu??? O matko jedyna, nie może być...
Druga sprawa, jesteś taki mądry a nie wiesz, że php wywodzi się z perla? jeżeli dla ciebie to są ludzie umysłowo chorzy to tak samo myślisz o osobach programujących właśnie w perlu, bashu sh itd. Bo to wszystko są języki skryptowe. "góró".
Po trzecie, jeżeli jesteś taki cwany to podaj mi przykład napisanego [b]portalu[/b] w C++ lub w czystym C. czekam na odpowiedź. Zadna Java (bo tutaj jest J2E, ani C# - .NET, ani też Python). tylko zwyczajne C++. Powtórnie napiszę, portalu anie strony.
Ostania rzecz, Allegro jest napisane w PHP, przez tych umysłowo chorych, autystycznych debili programistów PHP.
to na tyle.
Offline
Panowie - bez wycieczek osobistych proszę
Offline
Bez wycieczek osobistych: podana linia odpala skrypt co 5 minut a nie co 10 sekund. Tyle o umiejętności czytania dokumentacji przez "programistów" php.
Osobiście nic do "programistów" php nie mam... Możemy się spotkać w barze, wypić piwo, pogadać o polityce albo o dupach... Tylko aby się nie brali za programowanie.
Aha, interpreter php jest napisany w C i dokładnie tyle ma wspólnego z interpreterem Perla.
A co do portali pisanych w innych językach niż php - youtube wystarczy?
Ostatnio edytowany przez ethanak (2017-07-19 14:11:49)
Offline
[quote=ethanak]Tyle o umiejętności czytania dokumentacji przez "programistów" php[/quote]
popatrz również na siebie..
[quote=jezoo](...)Zadna Java (bo tutaj jest J2E, ani C# - .NET, ani też [b]Python[/b]).[/quote]
Druga sprawa, jeżeli jesteś tak dobry w te klocki to dlaczego , jełopów PHPowców nie oświecisz sam. Ja tylko podałem przykład jak można uruchamiać skrypty php w cron'ie bez używania zewnętrznych skryptów. trzecia sprawa, aby jakikolwiek skrypt uruchamiał się co 10sekund (nawet napisany w pythonie, bashu itd.) to trzeba tutaj zrobić pewien myk. O tym, że w cron;ie najmniejsza jednostka czasu to 1min. to każdy o tym wie.
aby cron wykonywał skrypt co 10sek. to wystarczy taki wpis:
* * * * * ( sleep 10 ; /home/.cronjobs/statistics.php all 2> /stat.log )
i na tym zakończę bo już nawet nie chcę pisać o poziomie twoich wpisów.
@Bodzio, ja poprostu musiałem to napisać, ponieważ już nerwowo nie wytrzymałem. Jeżeli ktoś nie ma pojęcia o czymś to niech lepiej się nie wypowiada.
Offline
Kurka wodna... ciekawe co ci pechapowcy jeszcze wymyślą... ten język naprawdę wypiera logikę z mózgu czy co?
Offline
[quote=jezoo]aby cron wykonywał skrypt co 10sek. to wystarczy taki wpis:
* * * * * ( sleep 10 ; /home/.cronjobs/statistics.php all 2> /stat.log )
[/quote]
Ty tak na serio? :D
Offline
Kierunek wydaje się być dobry, skorzystałbym z minutowego interwału crona przy czym rozbudowałbym to do kolejnych linijek z sleep 20, 30, 40, 50, 60.
Tak na pierwszy rzut oka nie widzę aby ta jedna linijka wystarczyła do nieskończonego cyklu 10sek., ale nie jestem programistą php więc może czegoś nie dostrzegam.
Offline
Crona pchać do interwału 10 sekund jakimiś operacjami?
Nie wystarczy w bashu pętla
while true; do sleep 10; polecenie; done;
Do odpalania skrypta z taką zawartością polecam [b]daemontools[/b].
Przykład odpalania małego robota XMPP napisanego w Perlu:
cat /service/robot/run #!/bin/sh exec 2>&1 cd /var/lib/robot; exec /usr/bin/setuidgid robot /usr/local/bin/robotr
Albo troszkę większych "robotów":
cat /service/crond/run #!/bin/sh exec 2>&1 exec /usr/bin/setuidgid root /usr/sbin/crond -n
#!/bin/sh exec 2>&1 mkdir -p /var/run/mysqld; chown mysql:mysql /var/run/mysqld; chmod 1777 /var/run/mysqld; exec /usr/bin/setuidgid mysql /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf
#!/bin/sh exec 2>&1 NGINX="/usr/sbin/nginx" test -d /var/run/nginx || mkdir -p /var/run/nginx; chown nginx:nginx /var/run/nginx; getcap $NGINX | grep cap_net_bind_service 2>&1>/dev/null || setcap cap_net_bind_service+ep $NGINX exec /usr/bin/setuidgid nginx $NGINX -c /etc/nginx/nginx.conf -g 'daemon off;'
Pozdro
Ostatnio edytowany przez Jacekalex (2017-07-19 21:29:50)
Offline
[quote=yossarian][quote=jezoo]aby cron wykonywał skrypt co 10sek. to wystarczy taki wpis:
* * * * * ( sleep 10 ; /home/.cronjobs/statistics.php all 2> /stat.log )
[/quote]
Ty tak na serio? :D[/quote]
Nie na serio, chciał w cronie to dałem to co chciał.
Jeżeli chodzi o takie rzeczy to ja robie skrypt w PHP i odpalam w tle i sobie lata np:
define("CLI", 1); define("DEBUG", false); use Cli\Worker; $worker = new Worker(); $worker->enableDebug(true); // Never ending story while(true){ $worker->checkWorker(); if($worker->start){ $worker->run(); } sleep(15); }
A w innych projektach używam funkcji [url=http://php.net/manual/en/function.proc-open.php]proc_open[/url] oraz [url=http://php.net/manual/en/function.proc-get-status.php]proc_get_status[/url]:
<?php $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w') ); $proc = proc_open('yourcommand', $descriptorspec, $pipes); $proc_details = proc_get_status($proc); $pid = $proc_details['pid']; echo $pid;
Offline
Strony: 1
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00064 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.142.249.130' WHERE u.id=1 |
0.00093 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.142.249.130', 1734495642) |
0.00061 | SELECT * FROM punbb_online WHERE logged<1734495342 |
0.00039 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=29494 AND t.moved_to IS NULL |
0.00022 | SELECT search_for, replace_with FROM punbb_censoring |
0.00474 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=29494 ORDER BY p.id LIMIT 0,25 |
0.00142 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=29494 |
Total query time: 0.0091 s |