Foros del Web » Programando para Internet » PHP »

Php multitarea?

Estas en el tema de Php multitarea? en el foro de PHP en Foros del Web. Hola buenas.tengo hecho un carrito de la compra que ya lo he dejado funcionando, pero solo la parte de crear una sesion, añadir los articulos ...
  #1 (permalink)  
Antiguo 03/10/2009, 04:57
 
Fecha de Ingreso: junio-2009
Mensajes: 52
Antigüedad: 14 años, 11 meses
Puntos: 1
Php multitarea?

Hola buenas.tengo hecho un carrito de la compra que ya lo he dejado funcionando, pero solo la parte de crear una sesion, añadir los articulos y poner la cantidad. Asi que ahora tengo que hacer la forma de enviar los datos de la compra a lo que es el vendedor, para ello he pensado en lo siguiente:
1. Una vez que el cliente haya pedido lo que quiere, poner un boton de finalizar compra que lo lleve a un formulario (hasta aqui facil)
2. En el formulario poner nombre, apellidos, etc etc.
3. al darle a enviar el formulario, debe de haber una accion php que deberia de hacer lo siguiente:

* generar un código de compra que nunca se repita (podria estar encriptado en md5).
* mandar un email al cliente con la relacion de articulos comprados, codigo de compra y modo de pago.
* mandar un email al vendedor, diciendole lo que ha comprado el comprador, el codigo de compra y los datos del cliente.
* una vez hecho todo esto, mandar al cliente a una pagina diciendole que su compra ha sido efectuada, y borrar la sesión de compra.

Claro está, al ser el php monotarea, habria que buscar alguna forma de hacerlo multitarea, habia pensado en ajax o crear un php con variables, pero es que tanto en ajax como en php me relio mogollon. A ver si alguna alma caritativa me soluciona esto .


Gracias anticipadas por el trabajo que haceis en este foro, que la verdad, me a ayudado bastante en formar la parte del carrito
  #2 (permalink)  
Antiguo 03/10/2009, 05:03
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Php multitarea?

¿php monotarea?, apache es multihilo-multiusuario, cada vez que se conecte un cliente se le crea un id de sesión diferente, no vas a tener problemas con eso ;), es decir php si es multiusuario, lo de multitarea o hilos es otro tema diferente y creo que no lo necesitas.
  #3 (permalink)  
Antiguo 03/10/2009, 05:08
 
Fecha de Ingreso: junio-2009
Mensajes: 52
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Php multitarea?

nono no me refiero a multiusuario, me refiero a multitarea, es de cir solo puede hacer una cosa, o sea, en el mismo php no se puede hacer que envie 2 emails y crear el codigo y todo esto, vamos a lo mejor estoy equivocado, si estoy equivocado, corregidme, que solo estoy en 1º de grado medio de fp xDDDDD
  #4 (permalink)  
Antiguo 03/10/2009, 05:34
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 9 meses
Puntos: 150
Respuesta: Php multitarea?

La verdad yo tampoco entiendo lo que quieres decir.... si haces tu sistema correctamente, dos usuarios distintos al entrar a tu web el servidor los trata como sesiones distintas, por lo que aunque lean el mismo PHP al terminar de enviar los datos (con el formulario que dices) cada uno va a enviar sus propios datos, logicamente..
  #5 (permalink)  
Antiguo 03/10/2009, 05:45
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Php multitarea?

puedes enviar un email primero al cliente y el otro al vendedor después, ¿no le veo el rollo?, te reitero No necesitas hilos para eso

proc_open te permite simular un hilo porque lo que hace es poder llamar a otro ejecutable que puede ser el mismo php y ejecutar otro script, pero como no puedes compartir recursos (resources) es muy limitado con respecto a otros lenguajes, pero para lo que necesitas no te hace falta, es complicarse la vida.
  #6 (permalink)  
Antiguo 03/10/2009, 06:28
 
Fecha de Ingreso: junio-2009
Mensajes: 52
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Php multitarea?

ok asik maycoalvarez, si no te e entendido mal, se crean los diferentes php para las diferentes cosas y despues en un php aparte, con el proc_open se van ejecutando no? o lo he entendido mal?
  #7 (permalink)  
Antiguo 03/10/2009, 07:08
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Php multitarea?

Cita:
Iniciado por ernanillo Ver Mensaje
nono no me refiero a multiusuario, me refiero a multitarea, es de cir solo puede hacer una cosa, o sea, en el mismo php no se puede hacer que envie 2 emails y crear el codigo y todo esto, vamos a lo mejor estoy equivocado, si estoy equivocado, corregidme, que solo estoy en 1º de grado medio de fp xDDDDD
puede hacer eso y mas, el usuario hace las peticiones y el servidor se encarga de hacer el resto (obvio configurandolo para que asi sea, es decir si envias un formulario a send.php, si send.php tiene las directivas creadas hara lo que le pidas [if($_POST['enviar']){echo 'se ha enviado';}] ) podes decirle al archivo que recibe la peticion que se encargue de hacer todo, generar el numero, enviar los correos y devolver las gracias por la compra. Tampoco hay necesidad que hayan 5 script corriendo en simultaneo por usuario. termina un proceso y sigue con el otro, no va demorar una 1 en hacer ese tipo de registro.


Puedo darte un ejemplo que utilizo para insertar post en la bd, y luego generar un xml para el rss
Código php:
Ver original
  1. if($accion == 'post'){
  2.                    
  3.                    
  4.                    
  5.                     $dataPost['id'] = $DbConn->maxID('post','id');
  6.                     $dataPost[tipo_id]=$_POST['tipo'];
  7.                     $dataPost['user_id'] = $usActual->getThisId();
  8.                                         $dataPost['titulo']=utf8_decode($_POST['titulo']);
  9.                     $dataPost['contenido']=utf8_decode($_POST['entrada']);
  10.                     if($_POST['tipo']==5){
  11.                         $dataPost['imagen']=$_POST['imagen'];  
  12.                     }
  13.                    
  14.                     $dataPost['estado']=$_POST['acciones'];
  15.                     $dataPost['fecha_ini'] = date('YmdHis');
  16.                     $dataPost['fecha_mod'] = "00000000000000";
  17.                     $dataPost['post_file']= "file";
  18.                    
  19.                    
  20.                     if($DbConn->MysqlInsert('post',$dataPost)){
  21.                         $newFeed = new feeds();
  22.                         $newFeed->setResource($newFeed->switchDisplayName($dataPost['tipo_id']));
  23.                         $newFeed->setConfig('host','localhost/misitio');
  24.                         $newFeed->setConfig('saveXml','../../xml/'.$newFeed->switchDisplayName($dataPost['tipo_id']).'.xml');
  25.                         $newFeed->createRssXML();
  26.                         echo 'ok';
  27.                     }else{
  28.                         echo mysql_error();
  29.                     }
  30.                    
  31.                 }

Última edición por samu22; 03/10/2009 a las 07:13
  #8 (permalink)  
Antiguo 03/10/2009, 10:36
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Php multitarea?

Cita:
Iniciado por ernanillo Ver Mensaje
ok asik maycoalvarez, si no te e entendido mal, se crean los diferentes php para las diferentes cosas y despues en un php aparte, con el proc_open se van ejecutando no? o lo he entendido mal?

simular hilos
php no los soporta, si logras ejecutar otro script con proc_open la salida del mismo no podrá ser recibida por el cliente, es para procesos internos, lo que hace es "ejecutar" otra instancia de la aplicación en el server, no hay interacción con el cliente, es server-server; es totalmente ineficiente para enviar 2 correos.

Además veo que pretendes enviar simultáneamente 2 correos o más a la vez, déjame decirte que aunque lo hagas por ejemplo en C# con hilos simultáneos, no son técnicamente simultáneos porque el CPU trabajará básicamente con una política de Round-Robin y de todas formas para enviar un correo necesita bloquear temporalmente el puerto 25 por lo que el otro hilo quedaría esperando a que sea liberado para enviarlo, esto es tecnología de interrupciones IRQ y a menos de que tengas un supercomputador con varias salidas de interfaces las PC x86 no te dejarán enviar correo masivo simultáneo.

¿no veo el problema de enviar un correo y otro después, o anidarlos en un bucle?, la diferencia de envio del uno del otro es milisegundos dependiendo de las capacidades del equipo.
  #9 (permalink)  
Antiguo 03/10/2009, 19:39
 
Fecha de Ingreso: junio-2009
Mensajes: 52
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Php multitarea?

si, si eso es lo que quiero, uno detrás de otro, vamos que me da igual, lo unico que quiero es que se haga todo lo que puse en el primer post y que haya un tiempo de demora de, omo mucho 10 segundos. Lo malo es que no sabria como hacerlo. Es que lo mas seguro es que me hayais entendido mal porque sera una cosa super sencilla, pero es que ya os digo que de php estoy pegaillo. Ah y otra cosa que me gustaria comentar (lo comento aqui por tal de no abrir otro tema) es que no sabria como hacer para crear codigos de compras en md5 sin que se repitan. Amos lo de que te cree un código al azar supongo que habrá algun comando que sea md5_nosek, pero que no se repita... Habia pensao que se pusieran en un mysql y fuera buscando, pero eso llevaria ya mucho tiempo de demora.
  #10 (permalink)  
Antiguo 04/10/2009, 02:16
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Php multitarea?

Cita:
Iniciado por ernanillo Ver Mensaje
si, si eso es lo que quiero, uno detrás de otro, vamos que me da igual, lo unico que quiero es que se haga todo lo que puse en el primer post y que haya un tiempo de demora de, omo mucho 10 segundos. Lo malo es que no sabria como hacerlo. [...]
Ya te lo dijeron, tú mismo lo dices: envías uno y después el otro. ¿cuál es tu problema?.

Tu problema es de lógica y/o de querer complicarte las cosas. ¿cuál es la razón de recurrir a MySQL?, ¿búsquedas?, ¿por qué dejarlo a la suerte?; si quieres un identificador único, házlo único. Tienes bastantes recursos a la mano: el tiempo de ejecución, la información de los artículos del usuario, el ID de sesión de PHP. Si dos usuarios adquieren exactamente los mismos productos, en exactamente al mismo tiempo, desde el mismo navegador ... solo es porque ese usuario tendrá un problema de personalidad múltiple .


Entonces, lo que pretendes hacer es realmente simple, ni multihilos ni generadores de código y búsquedas, sin bases de datos ... detente un momento a ver tu problema en términos simples y piénsalo bien.

Un saludo
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 04/10/2009, 04:30
 
Fecha de Ingreso: junio-2009
Mensajes: 52
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Php multitarea?

el porque tiene que ser todo en uno es porque el php que debe de hacerlo todo, es la acción del formulario, y un formulario no puede tener mas de una accion. Es que resulta que por tal de no hacer logins, pensé en poner un formulario con los datos y al darle a enviar, que lo hiciera todo. O sea, como me da = que se haga una cosa detrás de otra, pues deberia haber algun php que realizara las acciones una detrás de otra, nose si me entendeis pk me explico un poco mal :S y ahí mi problema, como hago para que el php se dé cuenta de que ha realizado la acción que envió a hacer previamente y que haga la siguiente. ah y lo del mysql, es para que no se repitan los códigos de producto, es decir, si yo creo al azar códigos, llegará algun día que alguno se repita, vamos, digo yo, es como si 10 personas tuvieran que elegir un numero del 1 al 10, alguno, lo mas seguro es que repita
  #12 (permalink)  
Antiguo 04/10/2009, 05:24
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Php multitarea?

Cita:
Iniciado por ernanillo Ver Mensaje
el porque tiene que ser todo en uno es porque el php que debe de hacerlo todo, es la acción del formulario, y un formulario no puede tener mas de una accion. Es que resulta que por tal de no hacer logins, pensé en poner un formulario con los datos y al darle a enviar, que lo hiciera todo. O sea, como me da = que se haga una cosa detrás de otra, pues deberia haber algun php que realizara las acciones una detrás de otra, nose si me entendeis pk me explico un poco mal :S y ahí mi problema, como hago para que el php se dé cuenta de que ha realizado la acción que envió a hacer previamente y que haga la siguiente. ah y lo del mysql, es para que no se repitan los códigos de producto, es decir, si yo creo al azar códigos, llegará algun día que alguno se repita, vamos, digo yo, es como si 10 personas tuvieran que elegir un numero del 1 al 10, alguno, lo mas seguro es que repita
... no entiendo bien lo que queres hacer. Vos podes enviar un solo campo desde un formulario y que el action del mismo haga todo lo que haya que hacer, el script se va a ejecutar linea por linea, cuando termine un proceso empezara con el otro, no se cual es el problema de eso. Podes optar por enviar el formulario via ajax para que el usuario no deba refrescar la pagina.

Lo de mysql es cuestion de comprobar si el campo existe, si no es asi ingresas el registro, pero si no haces ninguna comproabacion antes de insertar el dato, pues cabe la posibilidad de replicas, tabaja con numeros y codigos un poco mas granes para evitar un duplicado, con un random de 4 cifras deberia andar
  #13 (permalink)  
Antiguo 06/10/2009, 11:17
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Php multitarea?

Cita:
Iniciado por ernanillo Ver Mensaje
[...] digo yo, es como si 10 personas tuvieran que elegir un numero del 1 al 10, alguno, lo mas seguro es que repita
Siguiendo con tu ejemplo: ¿y por qué te limitas a 10 números?, ¿POR QUÉ DEJAS QUE ELIJAN?. Tienes infinidad de números, si tu se lo asignas te aseguras que le darás un número único.

PHP es un lenguaje interpretado ... simplemente se ejecuta instrucción por instrucción. Solo indica en el código dichas instrucciones (con validaciones, claro) y "PHP sabrá ejecutar uno y después el otro" ...

Nuevamente, la necesidad de complicarse. Vuelve a leer mi mensaje anterior.

Un saludo
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:18.