PDA

View Full Version : مشکل در دریافت و ارسال مکرر داده به سرور



leon7394
شنبه 09 اسفند 1393, 10:54 صبح
سلام
دارم روی یه برنامه وب سرویس تمرینی کار میکنم
یه هاست رایگان از گیگفا برای اینکار گرفتم و پروژه تمرینی یه شمارنده آنلاینه
توی پایگاه داده روی هاست یه جدول هست که دوتا فیلد داره ، یکی آیدی رکورد و دیگری count
ارتباطی رو که برقرار میکنم از طریق متد GET انجام میشه
با هربار تاچ دکمه ، تابع ReadData فراخوانی میشه و مقدار فعلی Count رو از سرور میخونه و میریزه روی serverCount و البته قبل از اون با فراخوانی تابع PlusOneOnServer یکی به مقدار Count در دیتابیس سرور اضافه میشه ، حالا مشکلی که هست اینه که خیلی کنده با اینکه سرعت اینترنت من خوبه و از اون مهم تر چندتا که میزنم مخصوصا اگر تندتر تاچ کنم هنگ میکنه و در نهایت isn't responding میده ، به نظر شما مشکل کار من کجاست ?
پیشاپیش ممنون


//رویداد کلیک دکمه
BtnPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
PlusOneOnServer();
readData();

String serverCountString = serverCount +"";

if(serverCountString != null) {
txtShow.setText(serverCount + "");
}
//رویداد کلیک دکمه




//تابع اضافه کردن سمت کلاینت
private void PlusOneOnServer() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
Webservice.readUrl("http://leopark.gigfa.com/CounterUpdate.php?id=1");
}
});
thread.start();
}


//تابع اضافه کردن سمت کلاینت








//اضافه کننده سمت سرور


<?php
$connection=mysqli_connect("sql313.gigfa.com","gigfa","00","gigfa_db");
mysqli_set_charset($connection, 'UTF8');
if(mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_errno();
}
$id = $_GET['id'];
mysqli_query($connection, "UPDATE CounterDB SET db_count = db_count+1 WHERE db_id=$id");
mysqli_close($connection);
?>


//اضافه کننده سمت سرور






//تابع خواندن
private void readData() {
result = Webservice.readUrl("http://leopark.gigfa.com/CounterPhp.php/");
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
if (result != null) {
try {
tasks = new JSONArray(result);
task = tasks.getJSONObject((tasks.length()) - 1);
if (result != null) {
try {
serverCount = task.getInt("count");
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}




}
});
thread.start();
}


//تابع خواندن

atpf67
شنبه 09 اسفند 1393, 13:37 عصر
سلام دوست عزیز

فکر میکنم مشکل از متد readData باشه.

به این شکل اصلاح کنید ببینید درست میشه یا نه؟

اول تردتون رو سراسری تعریف کنید.


private void readData() {
result = Webservice.readUrl("http://leopark.gigfa.com/CounterPhp.php/");

if (thread.isInterrupted()) {

thread = new Thread(new Runnable() {

@Override
public void run() {

if (result != null) {

try {

tasks = new JSONArray(result);

task = tasks.getJSONObject((tasks.length()) - 1);

if (result != null) {

try {

serverCount = task.getInt("count");

} catch (Exception e) {

e.printStackTrace();

}

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

});

thread.start();

} else {

thread.interrupted();

}
}