¿Cookies o numero aleatorio en php?,

Buenas, estoy haciendo una pequeña aplicación que tras rellenar un formulario genera una imagen y la la inserta en un pdf. Tal y como tengo la aplicación justo ahora (todavía no la tengo publicada) la imagen que genero siempre tiene el mismo nombre, por lo que si 2 usuarios rellena el formulario a la vez y lanzan el script php a la vez, puedo haber una condición de carrera y que al final una imagen acabe en el pdf del otro usuario y al contrario. Supongo que apache podrá tratar cada petición en un hilo de ejecución diferente, por lo que había pensado que quizás sería una buena idea (a lo mejor es una burrada...) que cuando el usuario lance el script en php, en este genero un número aleatorio suficientemente grande o por la fecha, que se lo añado al nombre de la imagen y posteriormente se lo pasaría al pdf para que pusiera la imagen en el pdf.
Pero claro esto creo que funcionaría si las peticiones se lanzan en hilos distintos, porque si no, una petición puede machacar el valor de otra, y no hago ná..

Bueno, por cookies este problema no lo tendría porque se guardaría en la sesión de cada uno el numero aleatorio que generaría y luego lo recogería en la generación del pdf.

¿Cuál creéis que es mejor opción?
No tengo mucha experiencia en PHP, estoy aprendiendo, pero creo que por sesiones sería más fácil. Cada usuario con su sesión y sus cosas y así no puede interferir con los demás.
Es que no tengo usuarios registra
No necesitas registrar a usuarios para crear sesiones, no tiene nada que ver.

Para el nombre de la imagen puedes usar un identificador único, por ejemplo este:

$nombre_imagen = uniqid(md5(rand()), true);
puedes generar un nombre aleatorio con la función uniq_id. creo que había también otra función que justamente hacia eso, pero ya no estoy seguro de si eso es en PHP o en otro lenguaje (toco varios lenguajes según el día, y acabo con un cacao....) mira a ver en php.net si hay algo (busca temp name o algo así). y puedes usar variables de sesión o globales para almacenar ese nombre.
aparte de todo esto.... ¿debes guardar si o si la imagen? igual con gd puedes embeber la imagen en el fichero sin tener que guardarla.
emmm

Y porque no le pones al archivo de nombre año_mes_dia_hora_minuto_segundo_microsegundo ( date(u)).

Con microseg... es "casi" imposible que ambos coincidan, sino, registra los archivos pdf generados en la SQL y que al crear el pdf compruebe si el nombre "ya existe", y si es asi, que genere "de nuevo" XD
Con el código de session puedes hacerlo:

session_start();
$id = session_id();

Ahí tienes un código único por usuario y podrás recuperarlo siempre que quieras con llamar a session_id.
elchicosinhada escribió:Con el código de session puedes hacerlo:

session_start();
$id = session_id();

Ahí tienes un código único por usuario y podrás recuperarlo siempre que quieras con llamar a session_id.


No se me habia ocurrido, con lo fácil que es. Hace tiempo esto me hubiera ahorrado mucho trabajo XD
Muchas gracias por las respuestas
9 respuestas