inicar servicio Mysql y Apache

Iniciado por yoelrodguez, 20 Agosto 2014, 15:12 PM

0 Miembros y 1 Visitante están viendo este tema.

yoelrodguez

Hola a todos, estoy haciendo un programa de php para iniciar los servicios de Mysql y Apache de mi servidor. Lo que me está sucediendo es lo siguiente,  cuando se inició el servicio de mysql se me detienes la ejecución del script. Lo me mismo me sucede si inicio primero el  apache. A continuación le dejo el código:


<?php
echo "Iniciamos servicios";

chdir("/xampp/mysql/bin/");
if(
system('mysqld')){
echo "Servicio Mysql Iniciado";
}
echo 
"Iniciamos servicio de Apache 2.2";
chdir("/xampp/apache/bin");
if(
system('httpd.exe')){
echo "Servicio Apache Iniciado";
}
?>


engel lex

Para que corra php tiene que apache estar corriendo, no entiendo como ejecutas el php  sin  apache...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

yoelrodguez

El php lo estoy ejecutando desde la línea de comando. El c:>xampp\php\php.exe prueba.php

engel lex

Ahh ya, lo mas probable es que el  apache  reinicie  el  modulo  php para asegurar su funcionamiento, tal vez el mysql haga algo similar
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

yoelrodguez

Después de lo que me comentaste, hice la prueba con un .bat y me sucede lo mismo. Si uno inicia no me inicia el otro y viceversa. No sé si es que tenga que colocar algo en la configuración del apache o del mysql.


@echo off
echo Iniciar.
apache\bin\httpd.exe
mysql\bin\mysql.exe
goto finish


#!drvy

#5
El problema que tienes, es que ambas applicaciones tiran output cuando las llamas. Por tanto, php se queda esperando que termine el output de la primera para ejecutar la segunda.

Esto se puede solucionar añadiendo " & " al final de cada system().
Código (php) [Seleccionar]
system('mysqld &');

El problema, es que de igual modo, php y system() se quedaran a la espera de que finalicen estos programas para cerrarse.

La solucion es usar otro programa para iniciar los servicios. En el caso de windows, tienes el comando "start" con el parametro /b. Si los usas y ocultas la salida, te sale bien.

Código (php) [Seleccionar]
<?php
$services 
= array();
$services['mysql']='xampp/mysql/bin/mysqld';
$services['httpd']='xampp/apache/bin/httpd.exe';

foreach(
$services as $n=>$service){
 
system('start /b '.dirname(__FILE__).$service.' &',$r);
 echo 
'Servicio ',$n,' iniciado.',PHP_EOL;
}

?>


start /b -> Inicia el proceso en la misma ventana.
parametro $r -> es para ocultar la salida, aunque en caso de stderr, lo seguira mostrando.
dirname(__FILE__) -> El directorio donde esta el .php actual.

De todos modos PHP no fue hecho para estas cosas xD. Mirate tambien otras funciones como proc_open.

Saludos

yoelrodguez

#6
Gracias todo trabajo Ok.

WHK

Se supone que para eso existen los servicios, debes usar el script del xampp que sirve para instalar apache e mysql como servicios, luego solo los inicias con service start apache2 && service start mysql, el tema es que ese script necesitaría permisos de root, mucho cuidado de los permisos que le des a ese script porque podrías comprometer la integridad de tu servidor, si apache corre como un usuario no www-data y como root puedes provocar que un atacante ejecute script de php desde tu pagina web como root, para eso son los servicios, ellos se encargan de iniciar los binarios con sus respectivos permisos y entornos ya que tampoco declaraste el entorno de apache ni de php.