Во 1, я сам вафля и могу гавнокода насоветовать, а во 2 идея такова: - открываешь сессию для всех и создаешь переменную $viewed, по дефолту она 0, если клиент запросит статью - поменяешь на единичку
Хотя у тебя может быть много статей, в таком случае viewed может быть массивом, где будут айдишники статей, и если айдишник уже внесён в список - то бд не трогаем, а если не внесён, то каунтим и вносим.