Cómo enviar múltiples valores a un servidor web a la vez

Mi problema es que, mantengo un registro de la ubicación de los usuarios por segundo, y hace 60 valores en una matriz en un minuto. Escribí un php simple en mi servidor para guardar los datos a una tabla de mysql. Debido a la naturaleza de la conexión (por lo que sé), puedo guardar un registro por una solicitud con objeto httppost simple en el lado de Android. (La solicitud es como: xxx.com/writelocation.php?lat=33.76&lon=45.0 & alt = 12000) Traté de resolver esto usando asynctask pero no funcionó. La conexión es lenta y los datos son pesados. Lleva más de un segundo para que la conexión termine y en cada segundo viene un nuevo expediente viene. Busco una manera de enviar varios valores a la vez, en cada minuto o tan. Hasta ahora, no pude encontrar una solución aparte de usar el acceso directo a una base de datos remota. Pero mi alojamiento no proporciona acceso remoto a mi base de datos mysql.

Necesito una solución inteligente y barata para mi problema 🙂 ¿qué sugieres? está utilizando base de datos remota (por base de datos de alojamiento) sólo solución?

Gracias por adelantado.

La codificación de Json es muy rápida y la consumición del bandwish es realmente pequeña. Sugiero a yo para usar json para enviar esos datos y luego para analizar el json en el lado del servidor e insertar los datos en la base de datos.

Para entender más abou json en android, ver http://www.vogella.com/articles/AndroidJSON/article.html

Qué piensa usted acerca de ?

PHP

Con PHP es posible construir una matriz POST / GET multidimensional de la siguiente manera:

(Supongamos que esto es parte de la cadena de consulta)
id[]=1&id[]=2&id[]=3

Produce:

 array(1) { "ID" => array(3) { [1] => string(1) "1" [2] => string(1) "2" [3] => string(1) "3" } } 

Del mismo modo, si pone texto entre los corchetes, puede utilizar la funcionalidad de matriz asociativa de PHP:

form[fName]=John&form[lName]=Doe&form[age]=20

Produce

 array(1) { "form" => array(3) { ["fName"] => string(4) "John" ["lName"] => string(3) "Doe" ["age"] => string(2) "20" } } 

Huelga decir que esto funciona con POST y GET. Es posible que pueda utilizarlo en su aplicación, algo así:

loc1 [lon] = longitud y loc1 [lat] = latitud & loc2 [lon] = longitud y loc2 [lat] = latitud

Así que usted consigue:

 array(2) { "loc1" => array(2) { "longitude" => string(9) "longitude" "latitude" => string(8) "latitude" } "loc2" => array(2) { "longitude" => string(9) "longitude" "latitude" => string(3) "latitude" } } 

MySQL

Sólo un sidenote: En lugar de ejecutar múltiples consultas de inserción, puede insertar todos los datos a la vez y obtener algunas ventajas de velocidad. p.ej.

 INSERT INTO `users` ( `fName`, `lName`, `age` ) VALUES ( "John", "Doe", "20" ),( "John", "Citizen", "42" ) 

En lo anterior, hemos insertado dos filas de datos …

 ( "John", "Doe", "20" ) ( "John", "Citizen", "20" ) 

Además, asegúrese de que sus datos se hayan escapado correctamente. Esto puede variar dependiendo de la API de base de datos que utilice.

utilice INSERT DELAYED en lugar de INSERT. también MySQL no es una solución realmente escalable para este caso, tal vez sea mejor utilizar MongoSQL para esta cantidad de solicitudes. también puede guardar las solicitudes en el servidor como un archivo de texto y ejecutar consultas como un lote cada pocos segundos o minutos

Tratar de enviar cada nueva ubicación cada segundo es un defecto de diseño fundamental, y yo recomendaría evitar esta estrategia, ya que no se puede garantizar la disponibilidad de la red y la latencia de un dispositivo móvil.

La forma de hacerlo sería almacenar los datos localmente y enviarlos al servidor en bloques. Por ejemplo, recoja diez minutos de datos y envíelos de una vez. Tenga en cuenta que, aparte de la limitación de latencia de la red que ya ha descubierto, establecer y, a continuación, eliminar conexiones tiene una sobrecarga de red y una implicación en la duración de la batería. Por lo tanto, es mejor por muchas razones que los datos de buffer localmente y enviar el búfer después de un intervalo razonable.

Cada vez que envíe los datos al servidor, hágalo dentro de una solicitud POST. Este es el tipo de solicitud que se debe utilizar para enviar datos de cualquier tamaño significativo, y también significa que los datos podrían ser cifrados utilizando TLS si eso es un requisito para usted más adelante.

  • Escritorio remoto basado en web para conectarse a android
  • Algunas consultas sobre C2DM en Android
  • Android y php
  • Formato de registro de registro de Android c2dm
  • Almacenar una imagen codificada en base64 desde android vía php en mysql
  • android-async-http que sube la imagen al servidor php
  • tools / android devuelto no puede encontrar sdkmanager.jar
  • Cómo crear API de sitio web
  • El mismo elemento se elimina dos veces después de ejecutar la llamada de red en un bucle
  • JSONException: No hay valor para id
  • Conectando MySql con Android sin usar PHP
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.