Ja zrobiłbym to tak:
Dwie osobne tabele - użytkownicy[id, email, haslo itd.] oraz druga abonamenty[id_abonamentu, id_uzytkownika, start, koniec]
I przy każdej czynności, która wymaga wykupionego abonamentu sprawdzałbym czy w tabeli "abonamenty" istnieje kolumna z id_uzytkownika [Jeżeli istnieje więcej, to wybieram najnowszą np. w taki sposób "... ORDER BY koniec DESC LIMIT 1" Według kolumny koniec, bo w niej będzie przechowywany czas w s(UNIX) i nawet gdy użytkownik wykupi 2 abonamenty pierwsze na tydzień, a następnie na dzień(gdy na tydzień będzie jeszcze trwał), to zawsze wybierze ten, który działa i tym samym zapobiegniesz "zniknięcia" abonamentu]
I w taki sposób nie korzystasz z CRONA i oszczędzasz to z czego CRON korzysta [Nie jestem pewien ale na pewno z jakiś tam zasobów korzysta :)]