Publicidade   
 você está aqui: phpbrasil.com    artigos    artigo  
 
:: novos artigos ::

:: recomendado ::

PHP para a World Wide Web

Compre esse livro no Submarino.com.br

:: publicidade ::


:: novos scripts ::

:: elenco phpbrasil ::

Juan Roldán Esse usuário pertence aos 50 usuários mais ativos do site
Pontos: 4687

Visite a página de perfil de Ronaldo MenezesTransformar qualquer Script em um arquivo Executável (.exe)
por Ronaldo Menezes
Lista de Categorias  |  Contribua um Novo Artigo  |  Entre em Contato Conosco

Irei explicar como compilar um script PHP num arquivo executável pelo uso do Bamcompile.
Vote aqui!
Média de Votos Atual: 9.08
Total de Votos: 13
Nota:   


Por diversas vezes confrontei-me com as seguintes situações :
- deixar uma aplicação desenvolvida / site no cliente e não ter como proteger o código.
- Depender do browser para execução de script’s
- Depender de utilizar o script via comannd line

Seja por motivo de protecção ao código ou por dar maior agilidade ao processo , hoje utilizo “Bancompile” , script que permite a transformação de qualquer script em um arquivo executável .Após a transformação posso usar o arquivo executável em um “ Scheduler” ou pedir a execução via php utilizando funcoes como “exec” ou “passtrhu”, as quais permitem a execução de um programa externo.

Compilador( “termo usado no mainframe , indica que um programa tem sua sintaxe verificada e ja encontra-se pronto para ser transformado em executável)

Como exemplo, explicarei o script abaixo onde utilizei o compilador para gerar o executável e dar agilidade ao processo de gerar perto de 1300 gráficos dinamicamente.
Neste script utilizo a class “JPGRAPH” , a qual não vou explicar neste artigo.
Os gráficos após serem gerados fazem parte de uma aplicação onde podem ser vistos sem serem gerados no momento pois foram gerados em "background".

Script compilado.php:

<?php
set_time_limit
(0);
$datah date("Y-m-d");
// class jpgraph
include("jpgraph.php");
include(
"jpgraph_line.php");
// conexao
$link mysql_connect("ip""user""password")
        or die(
"Não pude conectar: " mysql_error());
mysql_select_db("db") or die("Não pude selecionar o banco de dados");

$sql "SELECT * FROM disco ORDER BY volume";
$resulta mysql_query($sql);
$num_rows mysql_num_rows($resulta);
$tamanho =  $num_rows ;
while (
$row mysql_fetch_array($resulta)) {
    
$vol[] = $row["volume"];
}
for (
$i 0$i <= $tamanho 1$i++) {
    
$rep str_replace('#''_'$vol[$i]);
    
$query "SELECT DISTINCT
                  data,
                  volume,
                  free_percent
              FROM
                  discodia
              WHERE
                  volume = '$vol[$i]' AND
                  data > '$datah'
              ORDER BY
                  data,
                  volume"
;
    echo 
$query "\n";
    
$result mysql_query($query)    ;
    
$linhas =  mysql_num_rows($result);
    
// se existe conteudo monta grafico
    
if ($linhas 1) {
        if (
$myrow mysql_fetch_array($result)) {
            do {
                
$datax[] = $myrow["data"];
                
$volx[] = $myrow["volume"];
                
$ydata[] = $myrow["free_percent"];
            } while (
$myrow mysql_fetch_array($result));
        }
        
// Create the graph. These two calls are always required
        
$graph = new Graph(800200,"DISCO.".$rep.".JPG");
        
$graph->SetScale"textlin");
        
$tit "Percentual Free Space no volume  - " $vol[$i] ;
        
$graph->title->Set($tit);
        
$graph->SetMarginColor("azure");
        
$graph->xaxis->SetTickLabels($datax);
        
//$graph->xaxis->SetTextLabelInterval(5);
        
$graph->xaxis->SetFont(FF_ARIAL,FS_NORMAL,8);
        
$graph->xaxis->SetLabelAngle(45);
        
$graph->img->SetMargin(45,30,30,80);
        
$graph->SetShadow();
        
//$graph->ygrid->SetFill(true,'#EFEFEF@0.5','#BBCCFF@0.5');
        // Create the linear plot
        
$lineplot =new LinePlot($ydata);
        
$lineplot ->SetColor("darkblue");
        
//$lineplot->value->Show()  ;

        // Add the plot to the graph
        
$graph->Add$lineplot);
        
        
// Display the graph
        
$graph->Stroke("DISCO.".$rep.".JPG");
        unset(
$datax);
        unset(
$volx);
        unset(
$ydata);
    }
}
?>


Utilização do “Bamcompile”

Através de um arquivo .BAT crio o executável conforme descrito na documentação no site do Bamcompile.


bamcompile [-options] infile.php [outfile.exe]
bamcompile [-options] project_directory mainfile.php [outfile.exe]
bamcompile projectfile.bcp

Opções: ( Ver no site acima documentação)
    -w 
    -c  
    -d 
    -e:extension.dll Embed and use PHP extension
    -i:icon.ico Add icon to exe


O Arquivo utilizado (dll) encontra-se em php/extensions, neste caso como a intenção é gerar gráficos utilizei GD.

compilado.bat:

bamcompile -e  php_gd2.dll compilado.php
pause


Resultado :

Compilado.exe


Observar que um pequeno script fica com o tamanho de muitos KB, pois no executável esta incluso “php.exe”.

Bamcompile: http://www.bambalam.se/bamcompile/
Suporte a PHP 4 somente.

Ronaldo Menezes



<< Anterior 1 Próxima >>

 
Imprimir  |  Enviar para um Amigo


Comentários de Usuários

Doideira
publicado por Carlos Eduardo Gomes Monteiro - 2007-06-25 10:44:07

Caraca
Botei maior fé
Isso era tudo que um programador precisava...
Vou estudar mais sobre isto
E ver se eu consigo...

Muito bom!!!
Parabéns pelo tópico!!!

Atende apenas a minoria
publicado por Marcos Regis - 2007-06-25 15:06:11

Pena que o bamcompiler atenda a uma pequena parcela da galera pois PHP em host é sempre em Linux e não Windows.
Outra coisa importante, não há suporte a PHP 5.

Pra quem quer realmente fazer coisas interessantes pra qualquer plataforam.

http://devzone.zend.com/node/view/id/1021

Sem suporte a PHP 5 complica
publicado por Rodrigo Sartori Jarouche - 2007-06-26 09:56:55

Eu sei que a maior parte das aplicações são feitas em php 4 mas suportar php 5 é fundamental

Só php4?
publicado por thifacco - 2007-06-29 08:09:27

Cara, Parabéns!!!
Pena que não rola para os scripts em PHP5.

Qualquer novidade, posta ai!

Re: Só php4?
publicado por Ronaldo Menezes - 2007-06-29 08:24:27

Veja no site , ele diz que pode funcionar para PHP5 ´. Ainda nao testei !

Boa sorte

Ronaldo Menezes


Ajuda
publicado por Ailton Silva - 2007-07-05 05:15:11

Olá pessoal !

Sou programador PHP e ainda estou iniciando na linguagem, mas pesquiso muito, e me interesso por novidades que incrementem e melhorem os códigos.
Este artigo é fantástico.
Tenho um sistema que desenvolvi para um cliente que quer uma cópia para web e uma off-line.

Como faço para compilar todo o projeto e fazer com que ele rode num executável ???

Aguardo a colaboração, e fico agradecido pela gentileza.
Ailton Silva.

Re: Ajuda
publicado por Ronaldo Menezes - 2007-07-05 05:33:53

Ailton!

utilize o arquivo .BAT . Apos estar gerado o executavel e simples de um duplo clique no arquivo .EXE e ele executara como um programa normal.

Abrira uma janela DOS que ira fechar qdo terminar a execucao

Att

Ronaldo Menezes

Re: Re: Ajuda
publicado por Ronaldo Menezes - 2007-07-05 05:36:19

Ailton

veja em www.winbinder.org que acho que é uma solucao melhor para o que voce quer . Com winbinder pode-se gerar aplicaçoes "for windows" utilizando php

Att

Ronaldo Menezes


Vou tentar
publicado por rogerioclaro - 2007-07-05 13:00:20

e isso aew e tudo que um programador em php precisava... melhor precisava muito!!! vamos ver c eu consigo

Obrigado pela ajuda
publicado por Ailton Silva - 2007-07-08 17:15:49

Valeu, obrigado pela sua dica Ronaldo, mas o sistema que estou desenvolvendo em PHP tem base de dados MySql, será que se eu usar o winbinder, a base de dados é compilada também ? E as funcionalidades dos scripts, tipo, inserir dados, atualizar dados, excluir dados, funcionarão perfeitamente, pelo arquixo .exe ?

Por favor me esclareçam estas duvidas.

Re: Obrigado pela ajuda
publicado por Ronaldo Menezes - 2007-07-09 04:56:45

Ailton
Com winbinder voce podera fazer aplicaçoes sem precisar do browser. A sua base nao pode ser incluida no executavel , com o bancompile voce transforma scripts e somente scripts e arquivos .EXE

att

Ronaldo Menezes

Ótimo !
publicado por Ailton Silva - 2007-07-09 07:58:00

Ronaldo, com winbinder eu consigo fazer aplicações que não precise do browser, e a base de dados MySql, eu posso acessa-la ?

Aplicações dinâmicas precisam de base de dados. Sem esse componente o PHP fica engessado... só restringindo-se a aplicações básicas, do tipo: Hello PHP !

Por favor Ronaldo, com winbinder a base de dados vai junto ?

Aguardo a resposta.
Agradecido.

Re: Ótimo !
publicado por Ronaldo Menezes - 2007-07-10 00:37:54

AILTON

O winbinder trata de aplicaçoes com formato "for windows", e voce pode acessar o Mysql . São duas coisas distinctas que se complementam no caso

winbinder acessa mysql , mas sao duas aplicaçoes.
~
att

Ronaldo

Re: Ótimo !
publicado por Ronaldo Menezes - 2007-07-10 00:41:24

Ailton

Quanto ao seu cliente querer um web offline , porque voce nao monta uma intranet para ele, ou ainda instala apache , mysql e php em uma maquina dele e transfere o site para la ?

depois é so acessar assim:

http://localhost/seu_site/index.php

ou

http://127.0.0.1/seu_site/inde3x.php

coloca o endereço para ele no favoritos e diz a ele como entrar no site ""OFFLINE""

Att

ROnaldo

e o GTK
publicado por Dzaia Cuck - 2007-07-10 10:51:09

Apenas por curiosidade, você ja experimentou o PHP-GTK, onde eu também posso transformar um script php(feito para web) em Client server?

Re: e o GTK
publicado por Ronaldo Menezes - 2007-07-10 13:19:28

Dzaia

Nao usei o GTK . teria que ler para lhe responder

desculpe

Att

Ronaldo Menezes

Intranet
publicado por Ailton Silva - 2007-07-12 09:13:18

Ronaldo, era isso que eu intentava fazer inicialmente, mas o problema é que o apache, php, e mysql, para se instalar na plataforma do cliente é complicado, voce sabe onde encontro um pacote apache for windows que se instale automaticamente através de um programa de instalação ?

Valew, obrigado pelas dicas.
Ailton.

pacote apache
publicado por Sagaz - 2007-07-13 00:26:37

Ailton, use o WAMP que já vem quase todo pré definido e é muito fácil de instalar e configurar

wampserver.com/download.php

wamp
publicado por Ailton Silva - 2007-07-15 09:37:24

Valew, pela dica, consegui instalar este pacote no windows vista, mas quando executei os arquivos php que desenvolvi no php4 deu erro, veja ai o exemplo:

$sel="SELECT * FROM titulos WHERE cod_titulo!=''";
$exec=mysql_query($sel,$conexao) or die ('SQL sel está Errada !' . mysql_error());
$tab=mysql_fetch_array($exec);
$title=$tab["desc_titulo"];
mysql_free_result($exec);

Tá retornando o seguinte erro:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\adesal_off\index.php on line 8
SQL sel está Errada !

Será que no PHP5 o comando mysql_query() não é válido ? No php4 funciona corretamente.

Aguardo sua colaboração. Agradecido.

Re: wamp
publicado por Ronaldo Menezes - 2007-07-16 02:12:33

Bom dia

Aconselho voce a ler o manual do PHP5 .

att


Ronaldo

Re: wamp
publicado por Ronaldo Menezes - 2007-07-16 02:51:17

Ailton

O MySQL não é mais ativado por padrão, assim a DLL php_mysql.dll deve ser ativada dentro do php.ini. Também, o PHP precisa acessar a biblioteca de cliente do MySQL. Um arquivo chamado libmysql.dll é incluso na distribuição PHP do Windows e para permitir que o PHP converse com o MySQL este arquivo precisa estar disponível para o sistema Windows na variavél de ambiênte PATH. (retirado do manual )


Att

Ronaldo

GTK
publicado por Wender Fernandes Esse usuário pertence aos 50 usuários mais ativos do site - 2007-08-30 10:21:50

Teria uma forma de utiliza-lo para compilar codigos PHP-GTK2?

COMPILAR PHP GTK2
publicado por Ronaldo Menezes - 2007-08-31 01:31:36

Bom dia

Realmente nao sei informar sobre utilizaçao com o GTK2

Desculpe

Ronaldo Menezes

OS OUTROS ARQUIVOS...
publicado por Leonardo Mattos - 2007-10-06 07:09:56

Olá Ronaldo, fiz um gerenciador de webhost no delphi e tentei criar os plugins pra que ele pudesse interagir com o Cpanel e DirectAdmin, sendo que pra fazer isso eu tenho que incluir no caso do CPanel um arquivo .inc "Accounting.php.inc", tentei muito, tanto que até desisti, mas o que você tá apresentando aí pode solucionar o meu problema. Eu só tenho uma dúvida, e as imagens, folhas de estilo, includes(os outros scripts php), js ? tem como trabalhar usando tudo isso ?

Abraços e parabéns pelo artigo,
Leonardo Gazio.

Esse Winbinder é muito bom mesmo...
publicado por Leonardo Mattos - 2007-10-06 07:28:42

Dá pra fazer tudo com ele, entrei no site deles aqui e vi os exemplos, até aplicação em banco de dados com dbgrid tem, pra quem não viu vale apena ver lá...

Publique os seus Comentários

Nome:
Email:
Título:
Comentário:

NOTA: Cadastre-se no site para poder publicar comentários.

 
webmaster: João Prado Maia   © 2000 - 2005 phpbrasil.com
Gerado em 1.567 segundos