When I'm using local host (xampp) everything is good. It's fast and without lagging, bugging and so on... But when I use 000webhost (free) server response is too slow. Speed of retrieving 10 items with volley post (with base64 images and 7 more string values) and displaying them in list view is around 15seconds (on xampp server it's 2-3 seconds). Sometimes server is not responding at all or display this error:
Error SQL query: Edit Edit SET CHARACTER SET 'utf8';
MySQL Documentation said:
#2006 - MySQL server has gone away
I'm gonna put some php and android code to see if I'm doing something wrong or simply free web hosting is not good. So, my question is: Am I doing something wrong (bad code) or I need to find some good and responsive web hosting?
android code for getting items from web services (volley):
private void fillGridView(){
progressBar.setVisibility(View.VISIBLE);
itemsArray = new ArrayList<>();
requestQueue = new Volley().newRequestQueue(getActivity().getApplicationContext());
final Session session = new Session(getActivity().getApplicationContext());
StringRequest request = new StringRequest(Request.Method.POST, Constants.LOAD_DEFAULT_CITY_ITEMS, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("items");
for(int i = 0; i < jsonArray.length(); i++){
JSONObject jsonObj = jsonArray.getJSONObject(i);
String cityName = jsonObj.getString("CityName");
String shopName = jsonObj.getString("ShopName");
String price = jsonObj.getString("Price");
String dateExpiring = jsonObj.getString("DateExpiring");
String category = jsonObj.getString("Category");
String image64 = jsonObj.getString("Image");
String location = jsonObj.getString("ShopName");
String username = jsonObj.getString("U_Username");
itemsArray.add(new SingleItem(cityName, shopName, price, dateExpiring, category, image64,
location, username));
}
Collections.reverse(itemsArray);
customGridBrowseAdapter = new CustomGridBrowseAdapter(getActivity(), itemsArray);
gridView.setAdapter(customGridBrowseAdapter);
progressBar.setVisibility(View.GONE);
} catch (JSONException e) {
e.printStackTrace();
Log.v("PROFILE","Catch activated" + e.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> parameters = new HashMap<>();
parameters.put("CityName", session.getDefaultCity());
return parameters;
}
};
request.setRetryPolicy(new DefaultRetryPolicy(
0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(request);
}
php code for getting some items from mysql database:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
require 'connection.php';
loadItems();
}
function loadItems(){
global $conn;
$cityName = $_POST['CityName'];
$query = "SELECT * FROM items
WHERE CityName = '$cityName';";
$result = mysqli_query($conn, $query);
$number_of_rows = mysqli_num_rows($result);
$temp_array = array();
if($number_of_rows > 0){
while ($row = mysqli_fetch_assoc($result)){
$temp_array[] = $row;
}
}
header("Content-type: application/json");
echo json_encode(array("items" => $temp_array), JSON_PRETTY_PRINT);
mysqli_close($conn);
}
?>