Arquivo

Arquivo da Categoria ‘PHP’

Microsoft Web Plataform

31, Março, 2009

A Microsoft disponibiliza já há algum tempo uma espécie de wizard que instala um servidor web com vários extras, com o celebre processo de instalação “Next, Next…”.

Este wizard permite instalar de uma forma rápida e fácil os seguintes programas:

  • .NET Framework (ok, não é um programa!)
  • IIS já com algumas configurações e algumas extensões como por exemplo o IIS Media Services
  • SQL Server (Express com o SQL Server Management Studio Express)
  • Visual Web Developer (Um editor gráfico para ASP.NET suporta C# e VB.Net, se tiverem as versões express do C# ou VB.Net sem o Service pack 1 a instalação não prossegue!)
  • E mais…!

Para quem usa ou tem que usar Windows e precisa de uma ambiente de testes com suporte às várias tecnologias web esta é uma das soluções.

O que me fez escrever este post não foi publicitar mais um produto Microsoft, mas sim o espanto ao ver que este wizard instala ou permite instalar suporte PHP no ISS, que para mim sempre foi sinónimo de caos (já o fiz várias vezes em cada uma delas surgiu um problema diferente, principalmente depois de mexer no php.ini). Além disto na instalação do PHP permite instalar também um driver para ligar o PHP ao SQL Server. Sim eu sei que esse driver já não é novo, mas nunca foi tão facil de instalar!

Além do referido existe uma lista de aplicações (Open-source!) que podem ser facilmente instaladas entre as quais o WordPress e o Drupal dois nomes que associamos imediatamente ao mundo do Open Source, e ao mundo do Linux, Apache, Php e Mysql…

Nos ultimos tempos tenho notado uma proximidade maior entre a Microsoft e o mundo Open-Source ou será só impressão minha? O que quererá isso dizer??

Já agora o link para o site da coisa é o seguinte Microsoft Web Plataform e a Galeria de Aplicações está aqui.

Antonio Campos Grátis, Microsoft, PHP, Windows

MD5 Hash Generator

22, Dezembro, 2008

Estamos quase no natal e o que é que me passa pela cabeça??

Encriptação de strings como não podia deixar de ser! ;)

Por vezes tenho necessidade de “traduzir” uma string para MD5, quase sempre pesquiso no Google e encontro vários resultados mas pelas mais variadas razões os resultados às vezes não são pretendidos. Para facilitar a minha vida criei uma página simples que gera uma hash md5 da string introduzida como penso que pode ser útil para mais pessoas disponibilizo a mesma a quem a quiser usar (MD5 Hasher) é hash retornada é obtida através da função standard do PHP md5.

Aproveitei para aprender um bocado de AJAX, creio que o resultado ficou interessante e ao mesmo tempo simples de usar!!!

Antonio Campos Cábulas, PHP, Utilidades

PHP init_set o que é??

5, Janeiro, 2008

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

PHP Geoip – Fatal error: Allowed memory size of…

5, Janeiro, 2008

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

Sistema simples de cache com PHP…

4, Janeiro, 2008

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