Post
Topic
Board Bahasa Indonesia (Indonesian)
Merits 9 from 6 users
Re: [Q&A] Tanya Jawab Seputar Forum Disini/Ask about this forum here!
by
mu_enrico
on 17/11/2018, 13:12:44 UTC
⭐ Merited by dbshck (3) ,roycilik (2) ,Husna QA (1) ,manjiLocked (1) ,joniboini (1) ,ridho002 (1)
CMIIW, yang agan @manjiLocked jelaskan adalah penyajian informasi dari unix timestamp ke format:
Code:
Total time logged in: x days, y hours and z minutes.
bukan logika pencatatannya.

Apabila dalam kasus agan @my dream2021 maka hanya bisa dijawab bila mengintip source code pada bagian cara menghitung var (array) ['total_time_logged_in'] seperti yang agan @manjiLocked sudah singgung.

Code:
//  --> (#1)
if (SMF != 'SSI' && !empty($user_info['last_login']) && $user_info['last_login'] < time() - 60 && (!isset($_REQUEST['action']) || !in_array($_REQUEST['action'], array('.xml', 'login2', 'logintfa'))))
{
// --> (#2)
if (time() - $_SESSION['timeOnlineUpdated'] > 60 * 15)
$_SESSION['timeOnlineUpdated'] = time();

// --> (#3)
$user_settings['total_time_logged_in'] += time() - $_SESSION['timeOnlineUpdated'];
updateMemberData($user_info['id'], array('last_login' => time(), 'member_ip' => $user_info['ip'], 'member_ip2' => $_SERVER['BAN_CHECK_IP'], 'total_time_logged_in' => $user_settings['total_time_logged_in']));
if (!empty($modSettings['cache_enable']) && $modSettings['cache_enable'] >= 2)
cache_put_data('user_settings-' . $user_info['id'], $user_settings, 60);
$user_info['total_time_logged_in'] += time() - $_SESSION['timeOnlineUpdated'];

// --> (#4)
$_SESSION['timeOnlineUpdated'] = time();
}
Sumber: https://github.com/SimpleMachines/SMF2.1/blob/release-2.1/Sources/Logging.php

1. Apabila jarak waktu antara eksekusi snippet lebih dari satu menit, maka kode selanjutnya akan dieksekusi.
2. Apabila jarak waktu antara eksekusi snippet lebih dari atau sama dengan 15 menit, maka var $_SESSION['timeOnlineUpdated'] akan diupdate ke unix timestamp saat kode dieksekusi.
3. Var $user_settings['total_time_logged_in'] akan ditambah dengan unix timestamp sekarang dikurangi dengan var $_SESSION['timeOnlineUpdated']
4. Var $_SESSION['timeOnlineUpdated'] diupdate timestamp-nya di akhir snippet.

Kemaren gue gak sengaja baca salah satu post yang panjangya minta ampun sampai - sampai gue ketiduran setelah gue bangun dan gue lihat itu fitur Total time logged in kok gak berubahya?

Kasus 1 (Total time logged in bertambah 10 menit):
Misalnya agan @my dream2021 klik artikel pada 11/16/2018 @ 11:00:00pm (UTC) atau sama dengan timestamp 1542409200. Asumsikan 10 menit sebelumnya agan klik thread yang lain, maka kode pencatatan akan dieksekusi karena kode dieksekusi tidak dalam 1 menit terakhir (#1).
Karena kurang dari 15 menit, maka $_SESSION['timeOnlineUpdated'] tidak diupdate, alias masih berisi timestamp 1542408600 (diambil saat agan klik thread 10 menit sebelumnya) (#2)
Perhatikan kode $user_settings['total_time_logged_in'] += time() - $_SESSION['timeOnlineUpdated']; hasilnya $user_settings['total_time_logged_in'] += 1542409200 - 1542408600; $user_settings['total_time_logged_in'] nilainya bertambah 600 sekon.

Kasus 2 (Total time logged in tidak bertambah):
Kemudian agan @my dream2021 ketiduran dan baru klik profil pada 11/17/2018 @ 07:00:00am (UTC) atau sama dengan timestamp 1542438000. Karena agan tercatat klik 8 jam yang lalu, maka kode pencatatan akan dieksekusi karena kode dieksekusi tidak dalam 1 menit terakhir (#1).
Karena lebih dari 15 menit, maka $_SESSION['timeOnlineUpdated'] = 1542438000 (#2)
Perhatikan kode $user_settings['total_time_logged_in'] += time() - $_SESSION['timeOnlineUpdated']; karena kode dieksekusi serial maka time() dan $_SESSION['timeOnlineUpdated'] nilainya sama (atau hanya beda mikrosekon dan tidak bisa dibedakan). Maka $user_settings['total_time_logged_in'] += 1542438000 - 1542438000; tidak ada perubahan $user_settings['total_time_logged_in']

itu fiture berhenti ketika kita diam pada suatu post atau fiture itu cuman work jika kita pindah-pindah post (maksud gue ketika terjadi refresh pada bitcointalk) dan jika fiture itu work pada kita pindah-pindah post optimal limit waktu pada post berapa lama yang masuk itungan 5 menit atau 10 menit?
Hanya setelah action (klik/refresh) dan jeda antar klik (aktivitas) maksimal 15 menit, kalo original dari SMF-nya loh.. Entah @theymos sudah mengedit bagian yang mana Grin