1. Important notice about Cloudbleed - if your site uses the Cloudflare CDN, and you intend to follow the Joomla security team's advice to change your site "secret", you MUST READ THIS NOTICE.
  2. Fabrik 3.6 Released Remember to backup and test your backup before proceeding with this update. Please report any problems you might experience with this new version here on the forum. You are safe to upgrade to Joomla! 3.7 and PHP 7.x with this version of Fabrik. View the blog for more details on this release.

Best practice, send to private list once with scheduled email plugin

Discussion in 'Professional Support' started by wouter.galia, May 25, 2017.

  1. wouter.galia

    wouter.galia New Member

    Level: Professional
    Hi

    I use the scheduled email task plugin to send to a list. The list should only be accessible by doctors because the information in the list is confidential. One of the biggest problems that I encounter is that emails are sent multiple times. I can not replicate this problem, all my personal tests work fine. The ‘sent’ field is updated when sent, because of the condition (only if not sent) the email only goes out once.

    However when running live with allot more activity and a cron every 15 min almost all emails are sent more than once (up to 8 times). Every email contains a direct login link to see personal reports. Could it be that the cron is triggered multiple times before knowing that the ‘sent’ field is updated?

    It is difficult to understand the cause because the problems are not very consistent. Can you give me some advice on what the best practice would be to avoid these problems?
     
  2. cheesegrits

    cheesegrits Support Gopher Staff Member

    Level: Supporter
    Do you have "run gating" enabled on the cron task?

    -- hugh
     
  3. cheesegrits

    cheesegrits Support Gopher Staff Member

    Level: Supporter
    Also, are you running the cron on a copy of the list that pre-filters on your 'sent' field?

    One common problem with cron tasks is the size of the dataset. When we do the row selection for a cron job, we don't do any pagination, so it'll select the whole table, subject to whatever pre-filters are on your list. That can result in very long processing times, if you have thousands (or tens of thousand, or ...) of rows.

    What I recommend is copying your List, and setting a pre-filter on that, to filter out your 'sent' rows.

    And to expand on the "run gating". With that enabled, we won't start another run of the cron job if there is already one running. May not be your problem, with a 15 minute run, but could be if you have a lot of rows. So what could be happening is that one task starts, takes more than 15 mins to run, another one starts, etc. And because we only update the "sent" field in a single query once all row processing is done, it's possible more than one task could send the same email. By setting run gating, you make sure that won't happen.
     
  4. wouter.galia

    wouter.galia New Member

    Level: Professional
    Thank you, this really helps. I created a new list with an extra prefilter on 'sent' and activated run gating. I will report back when the next batch is sent out.
     

Share This Page