|
|
|
ขอสอบถามการทำงานแบบ Real time ของเว็บ http://www.worldometers.info/ หน่อยคับ |
|
|
|
|
|
|
|
อาศัยเทคนิคที่ผมก็อยากจะรู้เหมือนกัน และประสิทธิ์ภาพของ Server
|
|
|
|
|
Date :
2016-03-18 21:27:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แล้วตกลงเขาใช้อะไร 555+
|
|
|
|
|
Date :
2016-03-19 10:18:56 |
By :
sompon01 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่เกินนี้หรอกครับ
Code (JavaScript)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="jquery-2.2.1.js"></script>
<script>
var current = new Array(0,0,0,0,0,0,0,0,0,0);
var target = new Array(0,0,0,0,0,0,0,0,0,0);
var b;
$(document).ready(function(){
b = $('b');
$.each(b, function(idx, ele){
var x = parseInt($(ele).html());
current[idx]=x ; target[idx]=x;
});
setInterval( function(){
$.ajax({ url: 'getnew.php', type: 'POST', data:{data: target}}).done(function(msg){ target = $.parseJSON(msg); });
}, 1000);
setInterval( function(){
for(var i=0; i<10; i++){
if( target[i]>current[i]){
current[i]++; $(b).eq(i).html(current[i]);
}
$('i').eq(i).html(target[i]);
}
}, 5);
})
</script>
</head>
<body>
<b><?=($x=time())?></b><i></i><br><b><?=$x?></b><i></i><br>
<b><?=$x?></b><i></i><br><b><?=$x?><i></i><br><b><?=$x?></b><i></i><br>
<b><?=$x?></b><i></i><br><b><?=$x?><i></i><br><b><?=$x?></b><i></i><br>
<b><?=$x?></b><i></i><br><b><?=$x?></b><i></i><br>
</body>
</html>
getnew.php
Code (PHP)
<?php
$x= $_POST['data'];
echo json_encode( array(
$x[0]+rand( 0,200),
$x[1]+rand( 0,200),
$x[2]+rand( 0,200),
$x[3]+rand( 0,200),
$x[4]+rand( 0,200),
$x[5]+rand( 0,200),
$x[6]+rand( 0,200),
$x[7]+rand( 0,200),
$x[8]+rand( 0,200),
$x[9]+rand( 0,200),
));
|
ประวัติการแก้ไข 2016-03-19 10:50:37 2016-03-19 10:52:33
|
|
|
|
Date :
2016-03-19 10:36:19 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ setInterval ก็ผิดเต็มๆ แหละครับ
เราว่าไม่น่าใช่ setInterval ให้รัน ajax ทุกๆ 1000 มิลลิเซก หรอกนะ
จะทำ app realtime เราใช้ microsoft signalr
ก็อย่างว่าแหละ เราก็ไม่เคยลองกับ php ซะด้วย เคยใช้ทำ .net api (mvc)
ให้พวก mobile app ซึ่งตัว signalr เองก็สามารถทำ webapp แบบ realtime ได้
เช่น เว็บที่มีระบบ chat แต่ไม่แน่ใจว่าต้อง .net เท่านั้นหรือเปล่า
|
|
|
|
|
Date :
2016-03-21 12:26:42 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SignalR คือ ทางเลือกหนึ่งที่น่าสนใจมากครับ ตอนนี้ผมกะจะเอามาทำเป็นระบบ Chat กับ Notification
|
|
|
|
|
Date :
2016-03-24 09:38:49 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เหมือน หรือ ไม่เหมือน ไม่ใช่ประเด็นสำคัญ แค่ทำงานได้ และตัวเองถนัดอย่างไหนก็ใช้อย่างนั้นครับ
เพราะมันมีหลายอย่างในการ ส่ง prcess queue ให้ window ทำงาน
มันมี device หลายอยา่งที่ ส่ง event ออกมา ทำให้เรา register process queue กับ window ได้
ก็เลือกเอาตามใจชอบครับ
signair ก็เป็นทางเลือกที่ดี มีคนเขียนมาให้ใช้ ก็ใช้กันไปครับ
ใครอยากจะจมดักดานอยู่กับโค๊ดเก่าๆ แบบผม ก็ใช้กันไป ขอให้ใช้แล้วหาเงินเข้ากระเป๋าได้ก็พอ
ร้านข้างบ้านเขาขายข้าวลาดแกง แกงเก่าๆ วนไปวนมาอยู่อย่างนั้น
เขาก็ยังขายได้ หาเงินเลี้ยงลูกจบ doctor ได้
|
|
|
|
|
Date :
2016-03-24 10:42:34 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็ไม่แน่ ถ้าตีลังกาขาย ก็อาจจะรวยเละก็ได้ ใครจะไปรู้
การทำงานแบบไหน มันอยู่ที่สัญญา ตกลงกันยังไง
ก็ว่าไม่ตามที่เขียน ถ้าเกิดพลาดเขียนไม่ละเอียด
แล้วคนทำทำไม่ได้ตามที่หวังไว ก็คงทำอะไรไม่ได้
แต่ถ้าเป็นเราต้องการ app realtime แล้วใช้ set interval time
แล้วในสัญญาเขียนไว้ว่าต้องเป็น real realtime จริงๆ ก็คงให้ผ่านไม่ได้
ให้ผ่านไปคนตรวจรับซวย
|
|
|
|
|
Date :
2016-03-24 12:40:26 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าคุณคิดว่าคำว่า realtime ตามที่คุณว่า ก็ตามนั้นครับ
แต่สำหรับผม ผมไม่เคยเห็น คอมพิวเตอร์ ทำงานแบบ realtime 100% ครับ
ก็อยู่ที่ว่าคนจ้างเขาพอใจ ที่ระดับไหน คุยกันรู้เรื่องไหม
|
|
|
|
|
Date :
2016-03-24 12:57:41 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตามความเข้าใจของเรา
loop interval time != realtime lib
loop interval time --> ทำงานเป็นลูป ไม่มี request มันก็ทำ
realtime lib --> ทำงานเมื่อเกิด request เท่านั้น จะ reponse เร็วหรือช้าขึ้นอยู่กับ load ของ server
เคยสังเกต chat ของ mobile app ไหมล่ะ ที่แน่ๆ เขาไม่ได้ใช้ set interval time แน่นอน
realtime mobile app ถ้า web api เป็น .net เป็นเราเราใช้ signalr ทำ
จะให้ chat ระหว่าง web <-> web หรือ web <-> mobile ก็ใช้โค้ดเดียวกัน
|
|
|
|
|
Date :
2016-03-24 14:01:51 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมก็ไม่ได้ว่าอะไรไงครับ ก็ใครจะเข้าใจยังไง
ทุกอย่างมันมีข้อจำกัดของการ รอคอย
จะใช้ loop วน ทำ เสร็จ แล้วไป เริ่มใหม่
หรือจะ settimer มันก็อยู่ที่งาน อยู่ที่หน้าเพจ ตัวอย่างที่ผมทำ
มันแค่เป็นการ แสดงข้อมูลที่ไม่ได้ต้องการความละเอียดมากขนาดนั้น
ขนาดการ ใช้ video conference ยังมีการ delay ซึ่งผู้ใช้ ก็ย่อมรู้ถึง traffic ที่เกิดขึ้น ก็ยอมรับกันได้
แล้วจะไป กำหนด requirement อะไรให้มันทำงานไม่ได้ขนาดนั้นครับ
และการวนลูป ทำเสร็จไปทำงานต่อ ถ้าช่วงรอข้อมูลนานๆ
มันก็จะวนไปเรื่อยๆ ก็จะใช้พลังงานฟรี แบนด์วิดฟรีไป
เอามาใช้กับการแสดงข้อมูล ที่อาจจะไม่มีข้อมูลอะไรเกิดขึ้น ก็คงไม่เหมาะ
ทุกอย่างมันก็อยู่ที่งานที่ทำ ต้องการอะไร
และเอาเข้าจริงๆ อาจจะใช้ทั้งสองวิธี ทำงานร่วมกัน ก็ยังได้
ไอ้ที่ วนลูปรอก็รอไป ไอ้ที่ตังเวลาก็ตั้งไป
อ้าวเพื่อน ตอนนี้ไม่ว่างมาคุยตอน 1ทุ่ม นะ
จะรันโปรแกรมรอมันก็ใช่ที่เซท timer มันซะเลย
ถึงเวลาก็popup เปิดหน้าจอเอง อัตตโนมัต
ก็อยู่ที่เราผู้เขียนจะเขียนอะไรเท่านั้ัน
|
|
|
|
|
Date :
2016-03-24 14:26:44 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่รู้ อ่านแล้วงง ไม่รู้ต้องการจะสื่ออะไร
รู้แต่ว่าถ้าจะทำ app realtime อย่าใช้ set interval time วนลูป
เพราะมันคนละเรื่องกันเลย ใช้แทนกันไม่ได้
|
|
|
|
|
Date :
2016-03-24 15:27:49 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมก็ไม่รู้ว่าคุณจะห้ามคนอื่นไปทำไม ในเมื่อมันทำได้ในระดับที่เขาพอใจ
แค่ยอมรับข้อจำกัด ได้ขนาดไหนเท่านั้น ถ้างานมันออกมาใช้ได้ มันก็คือได้
คุณอาจจะมองว่ามันคนละเรือง แต่ผมมองว่ามันเรื่องเดียวกัน
โค๊ดที่ผมทำเป็นตัวอย่าง ผมคำนึงถึง performance ถ้าทำ loop ทุกตัว โอเค มัน realtime
แต่ performance มันเสีย bandwidth มันใช้เยอะ แต่ถ้าเรา หน่วงเวลาได้
ไม่ต้องวนลูป ตลอดเวลา มันก็ลดระดับการเชื่อมต่อลง ลด bandwidth
ความเร็วการทำงานของเครื่อง ทั้งสองฝั่งก็จะดีขึ้น ตัว timer ก็สามารถ +/- ได้ตามความเหมาะสม
มันไม่มีอะไรตายตัวหรอกครับในการเขียนโปรแกรม สำหรับผมขอให้งานมันเสร็จเป็นที่พอใจของผู้จ้างก็พอ
อย่าง mysql ก็เหมือนกัน ผมแค่แนะนำ ให้ใช้ mysqli เพราะใหม่กว่า ง่ายกว่า สำหรับคนหัดใหม่
หรือแม้แต่เจ้าของเซิฟเปิดใหม่ แต่ถ้าเขาไม่เปลี่ยน ก็ไม่ใช่ความผิดเพราะมันใช้งานได้
ในเมื่อสภาพแวดล้อมของ server เขาทำได้
ลูกค้าของผมเป็นใหญ่ครับ ถ้าต่อรองไม่ได้ก็ตามใจลูกค้า
ถ้าเสนอแนะไม่ได้ ก็แล้วแต่ลูกค้า ไม่หือไม่อือ แค่จ่ายเงินให้ตามที่ตกลงกันก็พอใจ
|
|
|
|
|
Date :
2016-03-24 16:10:41 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณ Chaidhanan ก็ใน No. 3 คุณบอกเองไม่ใช่หรือว่า "ไม่เกินนี้หรอก" พอมีคนอืนบอกว่าไม่ใช่นะยังมีอีกวิธีที่ไม่ต้องใช้ setInterval อยู่อีก
คุณก็ดันบอกว่าแล้วแต่ความพอใจของลูกจ้างนายจ้าง แถมยังประชด "ใครอยากจะจมดักดานอยู่กับโค๊ดเก่าๆ แบบผม ก็ใช้กันไป "
เดียวคุณไปเจอเขียนแบบ real time โดยใช้วิธี Long poll , WebSockets ,WebRTC ,Server-Sent Events ไม่หัวร้อนไปเลยหรือ
|
|
|
|
|
Date :
2016-03-24 17:30:08 |
By :
Guest3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมไม่ร้อนหรอกครับ จะใช้อะไรก็ใช้กันไป ผมก็บอกแล้ว มันมีหลายวิธี
ผมใช้วิธีนี้ ก็เฉพาะ โจทย์ ข้างบนเท่านั้น ผมก็คงไม่ใช้วิธี loop มันทุกครั้งหรอกครับ
แต่ถ้าเป็น chat ก็ว่าไปอย่าง แต่ก็ต้องมา ตรวจสอบการ คีย์
ถ้ามีการคีย์ข้อมูลที่ห่าง ก็จะเริ่มใส่ timer เข้าไปช่วยอยู่ดี จะได้ลด performance
|
|
|
|
|
Date :
2016-03-24 18:59:47 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|