Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Seguinte, tenho um site de buscas que procura pela palavra digitada em vários sites, funciona direitinho, mas está sendo limitado pelo funcionamento do php.
Se eu tiver muitos sites, a execução fica muito demorada e pode até estourar o limite de execução do servidor.
Para cada site cadastrado, ele roda a rotina, mas como é no sistema de fila, roda tudo em uma única execução.
Existe alguma linguagem que me permita múltiplas execuções?
Ou existe alguma forma de contornar esse problema?
Já pensei em ajax, mas acredito que mesmo assim, vai formar uma fila, certo?
Seu eu chamar 10 rotina ajax, que por sua vez vão rodar o php correspondente, ainda assim seria uma fila, correto?
>
Por que você não cataloga palavras-chave associando aos endereços que as contém?
Daí você consulta o seu banco de dados e lista os links dos sites terceiros, como um buscador (supostamente) faz.
Não resolveria, é um buscador tipo Buscapé, já pensei em fazer isso, mas preciso do preço em tempo real, não adiantaria catalogar outros dados, pois eu teria que acessar de qualquer forma, para pegar os preços.
seu problema é o tempo limite?
basta controlar usando o set_time_limit()
para rodar o crawler aconselho a fazer usando execução por command line para aplicações que rodem em background
>
seu problema é o tempo limite?
basta controlar usando o set_time_limit()
para rodar o crawler aconselho a fazer usando execução por command line para aplicações que rodem em background
http://php.net/manual/en/features.commandline.php
Sim e não. Acho que isso não resolveria. Meu host tem 60 segundos por execução, eu tenho 11 sites que podem ser pesquisados de uma vez só. A maioria vai rápido, mas sempre tem alguns bem lentos, que acabam ficando de fora, porque o tempo acaba. O ideal seria poder fazer as requisições, não como uma execução só, mas como várias.
E se você setasse o timeout da cURL? Daí as tartarugas seriam ignoradas.
Eu imagino que o site buscado seria prejudicado pois não receberia tantos referers quanto os outros, mas daí você poderia argumentar com o proprietário que a diminuição nas vendas dele através do seu site se dá porque o servidor dele é uma bela porcaria.
@tsubaru
é +- isso conforme o Bruno comentou..
mas aí depende do seu modelo de negócios..
também mantenho diversos serviços de crawler, mas utilizamos estruturas com servers dedicados.
o tempo limite para cada página definimos no curl para no máximo 8 segundos... o que já é muito, pois o normal é de 1 a 5 centésimos de segundo para sites rápidos.. sites médios levam entre 1 e 3 segundos
em casos extremos extendemos para 15 segundos.. mas só quando é algo bem específico no caso de clientes que pagam pelo serviço...
bom, enfim.. tem que analisar de acordo com as condições.
quanto a limitação técnica do seu host, aconselho a migrar para um dedicado ou ao menos um vps.. há as opções em cloud também que saem bem em conta.
Eu fico pensando como buscadores como Buscapé fazem para retornar resultados tão rapidamente. Eu acredito que eles possuam registro dos produtos, porque já tive resultados com preços diferentes dos reais nas lojas.
Já pensei em fazer isso também, copiar o catálogo de lojas, mas acabaria com a integridade de valores, já que promoções são diárias e não são organizadas e um só lugar nos sites.
Vou fazer uns testes organizando os endereços por velocidade de resposta.
Valeu pelas dicas.
Por que você não cataloga palavras-chave associando aos endereços que as contém?
Daí você consulta o seu banco de dados e lista os links dos sites terceiros, como um buscador (supostamente) faz.