pbs Posted April 15, 2013 at 03:02 PM Report #503257 Posted April 15, 2013 at 03:02 PM (edited) Viva pessoal, a questão é, preciso que um script corra durante várias horas, e tenho o script a correr bem num servidor, mas noutros pára sem motivo aparente. o code: <?php print 'o loop começou'; ignore_user_abort(1); $interval = 10; set_time_limit(0); #print ini_get('max_execution_time'); $file = fopen('log_loop.txt', 'w'); #------------------------------------------------------------------- #LOOP for( $i = 0; $i < 500; $i++ ): fwrite( $file , date('h:i:s d-m-Y')." #".$i. " loop with of $interval second, should write 500\n"); #enforce set_time_limit(0); sleep( $interval ); endfor; fclose( $file ); #END LOOP #------------------------------------------------------------------- ?> Já fiz alterações ao max_execution_time no próprio script e no ficheiro php.ini e nada. Alguma ideia de qual config possa ser? Obrigado. Edited April 15, 2013 at 03:08 PM by yoda
yoda Posted April 15, 2013 at 03:08 PM Report #503258 Posted April 15, 2013 at 03:08 PM Qual é a ideia do script? before you post, what have you tried? - http://filipematias.info sense, purpose, direction
pbs Posted April 15, 2013 at 03:38 PM Author Report #503263 Posted April 15, 2013 at 03:38 PM A função que lhe dou é para enviar mails sem exceder o limite do servidor por hora. Na versão de testes que coloquei, escreve apenas num file.. É que quero mudar de alojamento, mas no que estou a testar ( PTisp ), esse script pára... De todas as pesquisas que fiz, usar: ignore_user_abort(1); ignorar o fechar do browser e set_time_limit(0); tempo infinito para execução deveria ser suficiente, mas não é..
themeleon Posted April 15, 2013 at 05:38 PM Report #503281 Posted April 15, 2013 at 05:38 PM (edited) Isso deve-se ao facto de o teu host ter impedido a instrução set_time_limit(0); ignore_user_abort(1); já para evitar que faças este tipo de coisas (consumir recursos em background que dão cabo dos servidores todos) Estas instruções na prática deixam o script a bombar horas e horas a fio, agora imagina o que é 100 pessoas chamarem o envio de uma newsletter por engano por exemplo.... Portanto se queres chamar instruçoes de x em x tempo automaticamente recomendo-te que uses cronjobs (no teu cpanel tens isso, a não ser q estejas a usar outro "webmaster cenas") Edited April 15, 2013 at 05:40 PM by themeleon
pbs Posted April 15, 2013 at 06:32 PM Author Report #503285 Posted April 15, 2013 at 06:32 PM sim, já tinha pensado nisso, mas quando faço: print ini_get('max_execution_time'); ele dá zero, que supostamente é infinito, assim como o ignore_user_abort não tem nenhuma referência a poder ser desabilitado: http://php.net/manual/en/function.ignore-user-abort.php e posso configurar o php.ini ... o que deve poder contornar tudo, supostamente
yoda Posted April 15, 2013 at 06:44 PM Report #503287 Posted April 15, 2013 at 06:44 PM (edited) Eu não confiava nessa hipótese de poder configurar o php.ini, que muitas vezes vem mascarada ... tal como os ISP's comumente fazem com o "download ilimitado" que não o é. Cronjobs, como te indicaram acima, é a opção mais viável para o teu caso, e se quiseres mesmo deixar o script a correr como tens, o ideal é arranjares servidor dedicado ou VPS. Alojamentos partilhados têm sempre limitações. Edited April 15, 2013 at 06:45 PM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction
taviroquai Posted May 4, 2013 at 12:04 AM Report #505782 Posted May 4, 2013 at 12:04 AM (edited) Isso sao comentários em php? Ok esqueçam a pergunta lol Edited May 4, 2013 at 12:09 AM by taviroquai
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now