Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pedro Ernesto Mattos

executar script php em determinada hora no servidor

Recommended Posts

Olá minha duvida é: tenho que executar um script php em determinada hora no servidor. Esse arquivo tem que ser salvo com o seguinte nome bd.ldif que é um arquivo de texto com entradas ldif. Como fazer esse salvamento e essa execução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essas execuções geralmente são programadas pelo painel de controle do sue contrato de hospedagem, geralmente os servidores tem uma certa hora do dia que eles rodam, então vc só consegue programar naquele período que eles estipularem de acordo com seu planto.

 

Para que vc possa executar a hora que quiser, vc terá que ter um servidor dedicado ou um cload pois vc que cuida dele....



Não.. vc já pode salvar o arquivo com a extenção que vc quiser.. só basta no seu script vc colocar essa extenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fopen abre um arquivo, dependendo da opção, para leitura e/ou escrita, entre outras opções. Basta escolher a opção desejada, escrever no arquivo e depois fecha-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim porém estou com uma dúvida tenho que gerar 3 pg_fetch_array dentro de 3 laços. Se colocar assim não funciona.

fwrite($ldif, 
 while ($result = pg_fetch_array($sql)) {
...
}
 while ($result2 = pg_fetch_array($sql2)) {
...
}
 while ($result2 = pg_fetch_array($sql3)) {
...
}

);

 

ai pensei em fazer assim:

 

$texto= include "gerar_ldif.php";
$ldif =fopen("bd.ldif", "w");
fwrite($ldif, $texto);
fclose($ldif);

 

tbm não deu.

 

Salvou o arquivo. Porém o conteúdo que não veio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente, as duas formas que você fez não são "padrões", ou funcionalidades, do PHP.

while/for são estruturas de controle que "repetem" um trecho de código (falando à grosso modo), não retornam nada.

include/require incluem um arquivo dentro do escopo em que a função está inserida, também não retornam nada.

Você precisa passar como parâmetro, de fwrite, uma string.

O mais próximo, utilizando os seus exemplos, que você pode fazer, é isso:

while ($result = pg_fetch_array($sql)) {
    fwrite($ldif , $result[0]);
}
while ($result = pg_fetch_array($sql2)) {
    fwrite($ldif , $result[0]);
}
while ($result = pg_fetch_array($sql3)) {
    fwrite($ldif , $result[0]);
}


Isso tudo dependendo dos valores retornados em $result, pois $result é um vetor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vopu passar o exemplo de código completo. Para ver se consigo uma luz, nesse exemplo que vc me passou gerou um arquivo só com o primeiro resultado do select.kkkkkkkkkkkkkkkk

 

<?php
ini_set('display_errors',1);
ini_set('display_startup_erros',1);
error_reporting(E_ALL);
$ldif =fopen("bd.ldif", "w");
class Base64 {
     /**
      * I have changed letter placement (P <=> x, S <=> 9) and the cases
      * You can completely redo the mapping table
      */
     private static $BinaryMap = array(
         'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', //  7
         'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', // 15
         'q', 'r', '9', 't', 'u', 'v', 'w', 'x', // 23
         'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', // 31
         'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', // 39
         'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', // 47
         'W', 'P', 'Y', 'Z', '0', '1', '2', '3', // 55
         '4', '5', '6', '7', '8', '9', '+', '/', // 63
         '=',  // padding char
     );
     public function __construct() {}
     public function base64_encode($input) {
         $output = "";
         $chr1 = $chr2 = $chr3 = $enc1 = $enc2 = $enc3 = $enc4 = null;
         $i = 0;
//        $input = self::utf8_encode($input);
         while($i < strlen($input)) {
             $chr1 = ord($input[$i++]);
             $chr2 = ord($input[$i++]);
             $chr3 = ord($input[$i++]);
             $enc1 = $chr1 >> 2;
             $enc2 = (($chr1 & 3) << 4) | ($chr2 >> 4);
             $enc3 = (($chr2 & 15) << 2) | ($chr3 >> 6);
             $enc4 = $chr3 & 63;
             if (is_nan($chr2)) {
                 $enc3 = $enc4 = 64;
             } else if (is_nan($chr3)) {
                 $enc4 = 64;
             }
             $output .=  self::$BinaryMap[$enc1]
                       . self::$BinaryMap[$enc2]
                       . self::$BinaryMap[$enc3]
                       . self::$BinaryMap[$enc4];
         }
         return $output;
     }
     public function utf8_encode($input) {
         $utftext = null;
         for ($n = 0; $n < strlen($input); $n++) {
             $c = ord($input[$n]);
             if ($c < 128) {
                 $utftext .= chr($c);
             } else if (($c > 128) && ($c < 2048)) {
                 $utftext .= chr(($c >> 6) | 192);
                 $utftext .= chr(($c & 63) | 128);
             } else {
                 $utftext .= chr(($c >> 12) | 224);
                 $utftext .= chr((($c & 6) & 63) | 128);
                 $utftext .= chr(($c & 63) | 128);
             }
         }
         return $utftext;
     }
 }
 $conexao = pg_connect("host= port=5432 dbname=siga user= password=) or die("ERRO");

 $sql = pg_query("SELECT login,passmd5, a.matricula from cm_usuario u, cm_pessoa p, ga_aluno a WHERE p.idpessoa= u.idpessoa and a.matricula=u.login and idsituacao='02'") or die("Não foi possível realizar a consulta.");
 $sql2 = pg_query("SELECT login,passmd5 from cm_usuario u, cm_pessoa p, ga_docente d WHERE p.idpessoa= u.idpessoa and d.idpessoa= u.idpessoa and d.idvinc=u.login and d.situacao like '%Ativo%'") or die("Não foi possível realizar a consulta.");
 $sql3 = pg_query("SELECT login,passmd5 from cm_usuario u, cm_pessoa p, gp_tae t WHERE p.idpessoa= u.idpessoa and t.idpessoa= u.idpessoa and t.siape=u.login and t.situacao like '%Ativo%'") or die("Não foi possível realizar a consulta.");

    $i=0;
    $j=1000;
    //Loop com resultado do select
    while ($result = pg_fetch_array($sql)) {
        fwrite($ldif , $result[0]);
        $login = $result['login'];
        $passmd5 = $result['passmd5'];
        $i++;
        $j++;
        $string = pack('H*', $passmd5); // HEX to binary
        //echo $passmd5.'-------------->'.base64_encode($string).'<br />';
        echo '
        
        <br /># Entry '.$i.': cn='.$login.',ou=Aluno,dc=ifsudeste,dc=edu,dc=br <br />
        dn: cn='.$login.',ou=People,dc=ifsudeste,dc=edu,dc=br <br />
        cn: '.$login.' <br />
        gidnumber: 501 <br />
        givenname: user <br />
        homedirectory: /home/users/'.$login.'<br />
        objectclass: inetOrgPerson <br />
        objectclass: posixAccount <br />
        objectclass: top <br />
        sn: '.$i.' <br />
        uid: '.$login.'<br />
        uidnumber: '.$j.' <br />
        userpassword: {md5}'.base64_encode($string).'<br />';
    }

    $k=$i;
    $l=$j;
    while ($result2 = pg_fetch_array($sql2)) {
        fwrite($ldif , $result2[0]);
        $login = $result2['login'];
        $passmd5 = $result2['passmd5'];
        $k++;
        $l++;
        $string = pack('H*', $passmd5); // HEX to binary
        //echo $passmd5.'-------------->'.base64_encode($string).'<br />';
        echo '
        <br /># Entry '.$k.': cn='.$login.',ou=Docente,dc=ifsudeste,dc=edu,dc=br <br />
        dn: cn='.$login.',ou=People,dc=ifsudeste,dc=edu,dc=br <br />
        cn: '.$login.' <br />
        gidnumber: 501 <br />
        givenname: user <br />
        homedirectory: /home/users/'.$login.'<br />
        objectclass: inetOrgPerson <br />
        objectclass: posixAccount <br />
        objectclass: top <br />
        sn: '.$k.' <br />
        uid: '.$login.'<br />
        uidnumber: '.$l.' <br />
        userpassword: {md5}'.base64_encode($string).'<br />';

    }


    $m=$k;
    $n=$l;
    while ($result3 = pg_fetch_array($sql3)) {
        fwrite($ldif , $result3[0]);
        $login = $result3['login'];
        $passmd5 = $result3['passmd5'];
        $m++;
        $n++;
        $string = pack('H*', $passmd5); // HEX to binary
        //echo $passmd5.'-------------->'.base64_encode($string).'<br />';
        echo '
        <br /># Entry '.$m.': cn='.$login.',ou=TAE,dc=ifsudeste,dc=edu,dc=br <br />
        dn: cn='.$login.',ou=People,dc=ifsudeste,dc=edu,dc=br <br />
        cn: '.$login.' <br />
        gidnumber: 501 <br />
        givenname: user <br />
        homedirectory: /home/users/'.$login.'<br />
        objectclass: inetOrgPerson <br />
        objectclass: posixAccount <br />
        objectclass: top <br />
        sn: '.$m.' <br />
        uid: '.$login.'<br />
        uidnumber: '.$n.' <br />
        userpassword: {md5}'.base64_encode($string).'<br />';

    }


   fclose($ldif);


?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao invés de, nesse momento, passar códigos, explique o que você quer fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código você possui, mas entretanto, parece que não entendeu o funcionamento de fwrite. Entenda que, o que eu lhe passei, é apenas um exemplo e não o código funcional. Utilizar $result[0], foi apenas um exemplo. Eu expliquei que deveria verificar o valor de $result, ou seja, verificar o que você quer escrever no arquivo.

 

Se você está imprimindo na tela, ótimo. Agora reserve, em uma variável, o que você deseja salvar no arquivo, e, então, use em conjunto com fwrite.

 

Pegue o meu exemplo e a sua necessidade e mescle-os.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim, com concatenação.

 

$string = '';

$i = 0;
while($i < 10) {
   $string .= ' mais string';
   //O mesmo que isso
   //$string = $string.' mais string';
   $i++;
}

var_dump($string);

 

Faça o teste você mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.