معدل الارتداد يحتاج إلى بت واحد، لا إلى أداة تتبّع
حتى 28 أغسطس لم يكن هذا الموقع يعرض معدل الارتداد، وكانت صفحة «حول» تقول إن ذلك مقصود: فهو يحتاج إلى تتبّع جلسة عبر عدة مشاهدات للصفحات، وهذا يحتاج إلى لافتة موافقة.
النصف الأول كان صحيحًا. أما النصف الثاني فلم يعد صحيحًا منذ اللحظة التي بدأنا فيها تسجيل صفحات الخروج، ولم يحدّث أحد الجملة.
لماذا لم يكن ممكنًا حسابه ببساطة
هناك جدول للانتقالات من صفحة إلى أخرى. ويبدو أنه يحوي كل ما يحتاجه معدل الارتداد: فالزيارة التي تنتقل من صفحة إلى أخرى ليست ارتدادًا، إذن عُدّ الزيارات التي لا انتقالات فيها.
هذا لا ينجح، والسبب في ثلاثة أسطر من كود التسجيل. يُسقَط الانتقال حين تكون الصفحتان متطابقتين، وحين تمر أكثر من ثلاثين دقيقة بينهما، وبعد ثلاثمئة زوج جديد على عداد واحد في يوم واحد. كل قاعدة صحيحة بالنسبة إلى غرض الجدول — إظهار أي صفحة تقود إلى أي صفحة — وكل واحدة منها تجعل صفحة ثانية حقيقية غير مرئية.
وفي الوقت نفسه، تدوم الزيارة، لغرض عدّها، ساعة كاملة: فهذه هي المدة التي يبقى فيها الصف في الجدول الحي. وهكذا كان البسط سيستخدم تعريفًا للزيارة والمقام تعريفًا آخر. لم يكن الرقم ليكون خاطئًا قليلًا، بل كان سيكون بلا مرجع.
ما قالته البيانات فعلًا
خلال يومي 27 و28 أغسطس كانت هناك 8,669 زيارة و2,817 انتقالًا، أي 1.32 صفحة لكل زيارة في المتوسط. ولم يسجّل أي انتقال على الإطلاق سوى 99 عدادًا من 572.
وليس السبب مفتاحًا مطفأً — فتسجيل المسارات مفعّل افتراضيًا، وهو مفعّل لدى العدادات كلها وعددها 166,453. تلك المواقع صفحات مفردة فعلًا: صفحات ملفات شخصية، ومواقع من صفحة واحدة، ومعرض صور على منصة شخص آخر. معدل الارتداد لمعظمها سيقترب من مئة بالمئة، وسيكون ذلك صحيحًا.
بت واحد، ولا جمع جديد للبيانات
للزيارة أصلًا صف يدوم ساعة. وصار يحمل الآن شيئًا إضافيًا واحدًا: هل رأت هذه الزيارة يومًا صفحة ثانية مختلفة. وتُضبط القيمة داخل العبارة التي تُنفَّذ في كل الأحوال، دون استعلام إضافي:
ON DUPLICATE KEY UPDATE mehr = mehr | (url <> VALUES(url)),
last_seen = UNIX_TIMESTAMP(), url = VALUES(url)
ترتيب عمليات الإسناد هذه هو الحيلة كلها. تقيّمها قاعدة البيانات من اليسار إلى اليمين، لذا يظل url محتفظًا بالعنوان السابق حين تجري المقارنة. ضع url أولًا فيقارن الصف العنوان الجديد بنفسه، ويبقى البت صفرًا إلى الأبد، ويظهر معدل الارتداد مئة بالمئة للجميع. هذا إخفاق يبدو تمامًا كنتيجة معقولة، ولهذا كان من المجدي إثباته على صف تجريبي قبل الوثوق به.
حين تنقضي الساعة، تعدّ عملية التنظيف الليلية الصفوف المنتهية — كم زيارة، وكم منها متعددة الصفحات — وتكتب سطرًا واحدًا لكل عداد ويوم، ثم تحذف الصفوف. البت يعيش ساعة. لا ملفات تعريف ارتباط، ولا شيء يبقى بعده.
ما يمكن تعميمه
لم يكن السؤال المثير للاهتمام يومًا كيف نتتبّع جلسة. بل أي الأشياء التي نسجّلها أصلًا يصادف أنه يجيب عن السؤال، وهل الإجابة التي يعطيها مستندة إلى التعريف نفسه الذي يستند إليه السؤال.
مصدران يبدو كلاهما أنه يقيس الزيارات، أحدهما بقاعدة الثلاثين دقيقة والآخر بقاعدة الستين دقيقة، سينتجان نسبة هي رقم لا يعني شيئًا. ومن الأسهل إضافة بت واحد إلى صف موجود أصلًا من أن نشرح، لاحقًا، لماذا المعدل على ما هو عليه.