Successful
Client Requests |
| 200 |
OK |
| 201 |
Created |
| 202 |
Accepted |
| 203 |
Non-Authorative Information |
| 204 |
No Content |
| 205 |
Reset Content |
| 206 |
Partial Content |
Client
Request Redirected |
| 300 |
Multiple Choices |
| 301 |
Moved Permanently |
| 302 |
Moved Temporarily |
| 303 |
See Other |
| 304 |
Not Modified |
| 305 |
Use Proxy |
Client
Request Errors |
| 400 |
Bad Request |
| 401 |
Authorization Required |
| 402 |
Payment Required (not used yet) |
| 403 |
Forbidden |
| 404 |
Not Found |
| 405 |
Method Not Allowed |
| 406 |
Not Acceptable (encoding) |
| 407 |
Proxy Authentication Required |
|
| 408 |
Request Timed Out |
| 409 |
Conflicting Request |
| 410 |
Gone |
| 411 |
Content Length Required |
| 412 |
Precondition Failed |
| 413 |
Request Entity Too Long |
| 414 |
Request URI Too Long |
| 415 |
Unsupported Media Type |
Server
Errors |
| 500 |
Internal Server Error |
| 501 |
Not Implemented |
| 502 |
Bad Gateway |
|
| 503 |
Service Unavailable |
|
| 504 |
Gateway Timeout |
|
| 505 |
HTTP Version Not Supported |
|
Lista de respostas possiveis quando se liga a um servidor pelo protocolo http.
Quando se usa API’s fornecidas por terceiros é muito importante analisar os headers retornados pelo servidor para o resultado ser o pretendido!
Antonio Campos Manuais
As configurações do php independentemente da plataforma em que corre são por defeito feitas num ficheiro que se chama php.ini , quem precisa de alterar uma das confiurações para um script especifico ou não tem acesso a editar o php.ini pode contornar isso usando a função init_set a sintaxe é a seguinte:
init_set (”Nome_Parametro”, “Valor_parametro”);
Esta função retorna false no caso de por alguma razão o parâmetro não ter sido alterado e retorna o valor antigo no caso da alteração ter sido bem sucedida!
Se por exemplo quisermos alterar o limite de memoria alocável podemos usar o init_set da seguinte forma:
ini_set(”memory_limit”,”64M”;
Nem todas os parâmetros do php.ini são alteráveis, não encontrei nenhuma lista dos parâmetros alteráveis, mas é fácil quando usarem esta função se a sintaxe estiver correcta e se o valor do parâmetro for válido e mesmo assim a função retornar false é porque provavelmente descobriram um parâmetro não editável em runtime!
Antonio Campos Cábulas, Manuais, PHP
Para aqueles que estão a usar o código que disponibilizei neste post sobre a API do GeoIP, ou que usam o GeoIP de qualquer outra forma!
Hoje uma das aplicações em PHP que fiz utilizando a API do GeoIP, começou a dar um erro “Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 27609379 bytes) in /path_para_o_site/my-ip-info/geoipapi/geoip.inc.php on line 316”
A primeira coisa que fiz foi tentar com o init_set do PHP aumentar o “memory_limit” do PHP (ini_set(”memory_limit”,”64M”);) que não deu resultado apesar do valor a alocar fosse bastante mais baixo do que o limite.
Após vários testes falhados alterei um parametro na linha em que crio o apontador para a base de dados e ficou a funcionar correctamente! Na linha onde estava “$gcity = geoip_open(”db/GeoLiteCity.dat”,GEOIP_MEMORY_CACHE);” passou a estar “$gcity = geoip_open(”db/GeoLiteCity.dat”,none);” ficou a funcionar embora se note uma pequena perda de velocidade quase imperceptível mas está mais lento!
Depois de o problema estar resolvido fui ao site da MaxMind dar uma vista de olhos e encontrei um benchmark dos diferentes tipos de cache que se pode ter e qual o numero de queries/segundo conforme o tipo de cache!
Antonio Campos Cábulas, Manuais, PHP
Quando vi isto pensei que era brincadeira quando fui ao Google tranlate e experimentei traduzir Nitendo Wii de português para inglês o resultado que obti foi minimamente curioso!

Senão acreditam experimentem!
Antonio Campos Funs, Google, Inutilidades
Muitas vezes quando criamos um site e por pelas mais diversas razões surge necessidade de recorrer a um mecanismo de cache, uma das principais razões é a performance.
E em que é que cache influencia a performance? Imagina-se o ficheiro teste.php com 500 linhas de código com ligações a MySQL etc etc, é mais rápido se o ficheiro de output já estiver “feito” e só o actualizar de x em x temp, senão cada pedido seria 500 linhas de código assim serão 10 ou 20 conforme o mecanismo de cache a usar, temos que ter em conta que se nesse código existirem queries ao MySQL isso degrada ainda mais a performance.
Estou a criar uma classe de cache que de uma forma muito simples faz cache do output de qualquer script php inclusive se este tiver dados passados pelo método GET.
A classe pode ser muitíssimo melhorada para já só faz o que se propõe que é verificar se um ficheiro já se encontra em cache, se o mesmo estiver cria o output para o cliente, se ainda não existir cache é criado um buffer com o output da página pedida e cria um ficheiro em cache com o conteúdo do mesmo, que será servido no próximo pedido…
O código da minha classe é o seguinte:
O post está dividido porque é muito extenso!!…
Ler mais…
Antonio Campos Manuais, PHP
Comentários Recentes