Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tentando me aprofundar e estou começando a mexer com algumas outras coisas no PHP a não ser o que ele já disponibiliza, para trabalhar com os processos foi me recomendando o pthread.
Acontece que não habilita e sempre da o mesmo erro:
Class Thread Not Found
Meu sistema operacional é W8 eu uso o EasyPHP na versão 13.1 com PHP 5.5.0 e o Apache 2.4.4
Eu tenho grande dúvida quanto qual pacote instalar, eu já tentei todos para ser honesto. li que na versão 5.5 com o x86 rolava bem mas aqui nem foi
http://windows.php.net/downloads/pecl/releases/pthreads/
Aqui esta sendo meu último recurso mesmo, já li também que teria que por o pthreadVC2.dll na system32 mas também não obtive sucesso.
Se alguém souber e puder dar um retorno agradeço.
>
Você baixou o pacote diretamente da PECL?
http://pecl.php.net/package/pthreads
Baixei daqui: http://windows.php.net/downloads/pecl/releases/pthreads/
não sei bem se é do mesmo lugar que você indicou.
Qual a versão do seu windows e do servidor PHP, 32 ou 64 bits? De preferência para o servidor 32 bits, mesmo que o windows seja 64. Pois a maioria das DLLs são compiladas para o apache/PHP 32 bits.
A versão do windows é 64 bits esqueci desse fato.
As vezes, esses servidores (EasyPHP, XAMPP, WampServer) podem ter vários PHP INI espalhados em diversas pastas, acredite, isso acontece. Sempre que incluir uma nova biblioteca/pacote, verifique junto ao phpinfo() se a biblioteca está na lista de pacotes instanciados.
essa história de vários ini é verídica pois eu cheguei a encontrar 2 arquivos mesmo uma dentro da pasta do apache e outra na do php na dúvida coloquei pra duas e nada ainda.
Se não, verifique a infinicidade de arquivos php.ini que há dentro do EasyPHP, e qual é o correto, você poderá verificar com a função php_ini_loaded_file.
Isso aqui foi o motivo por positivar que eu não sabia e é muito útil pois estou trabalhando com diversos frameworks bizarros como o scriptcase.
outra informação importante que vi agora no manual é que preciso também habilitar o ZTS (eu não sei o que é isso) então vou checar ainda se esta habilitado.
Obrigado pelo retorno.
Mesmo o windows sendo 64, use a versão 32 do EasyPHP, é mais seguro e recomendado, por causa das libs.
Sobre o ZTS, significa Zend Thread Safety:
http://stackoverflow.com/questions/17272439/how-to-enable-zts-on-php
Não resolve muito o problema exato, mas não seria muito mais sano usar uma plataforma (JVM, CLR, LLVM, BEAM) que seja planejada para concorrência?
pthreads, mesmo sendo bem organizado, ainda sim é uma gambiarra e tem altas chances de ser abandonado pelo dono e altas chances de ter um bug crítico que vá afetar um comportamento importante. É como colocar uma roda de carro de Fórmula 1 num fusca...
Não resolve muito o problema exato, mas não seria muito mais sano usar uma plataforma (JVM, CLR, LLVM, BEAM) que seja planejada para concorrência?
Sinceramente essas siglas estão em árabe pra mim, eu cheguei a solução da thread com o seguinte problema.
Eu precisava separar um único processo dentre todos pois é uma ação que demora cerca de 15 minutos para liberar o processo e então a aplicação inteira fica inacessível e isso é ruim, então apenas para esse processo específico eu queria "isolar" ela.
eu vou dar uma lida e ver se me atende, obrigado.
>
Dê uma olhada e avalie este tipo de instalação:
??
Eu precisava separar um único processo dentre todos pois é uma ação que demora cerca de 15 minutos para liberar o processo e então a aplicação inteira fica inacessível e isso é ruim, então apenas para esse processo específico eu queria "isolar" ela.
Ah, então você pode usar simples queues tipo http://www.rabbitmq.com.
Você baixou o pacote diretamente da PECL?
http://pecl.php.net/package/pthreads
Qual a versão do seu windows e do servidor PHP, 32 ou 64 bits? De preferência para o servidor 32 bits, mesmo que o windows seja 64. Pois a maioria das DLLs são compiladas para o apache/PHP 32 bits.
As vezes, esses servidores (EasyPHP, XAMPP, WampServer) podem ter vários PHP INI espalhados em diversas pastas, acredite, isso acontece. Sempre que incluir uma nova biblioteca/pacote, verifique junto ao phpinfo() se a biblioteca está na lista de pacotes instanciados.
Se não, verifique a infinicidade de arquivos php.ini que há dentro do EasyPHP, e qual é o correto, você poderá verificar com a função php_ini_loaded_file.