# Automating your social publishing

Perfect Publisher makes it very easy to publish social posts from your Joomla!™ site. By default, Perfect Publisher works on Page Load mode (with the System-Automator Plugin). In this way, it requires visiting the site's front-end to process Requests and Posts. Or, it requires you to click on the Publish button to complete the publishing operation. In addition, there is no way to be 100% sure of the publishing time.

Our job is to make your life easier, making repeated and time-consuming procedures a breeze. To this end, we offer different publishing automation possibilities for Perfect Publisher.

NOTE

These features are available only in Perfect Publisher Basic and PRO.

# Overview of CRON jobs

For Perfect Publisher to run smoothly, you will need to set up a CRON job to run periodically. By unloading this processing task to a scheduled job, the extension will run faster and in a predictable way.

The CRON job is recommended to:

  • Avoid excessive processing during a normal page load
  • Process content requests
  • Deliver posts to social networks, especially when you publish to many channels or/and high volume of posts.
  • Import RSS Feeds
  • Detect newly inserted articles in the database.

There are two ways to execute the CRON job:

  • Web CRON job script
  • Command Line Interface (CLI) - Native CRON script (recommended)

Reference: Cron - Wikipedia (opens new window)

# Front-end processing, for use with CRON

The front-end processing feature is intended to provide the capability to perform an unattended, scheduled social publishing from your site or feeds import with the articles grabber.

The front-end publishing URL performs a single publishing step, and if there are defined feeds, an import operation to process all of them. You will only see a message upon completion, should it be successful or not. There are a few limitations, though:

It is not designed to be run from a web browser but from an unattended CRON script, utilizing wget or CRON as a means of accessing the function.

The script is not capable of showing progress messages.

Before beginning to use this feature, you must set up Perfect Publisher to support the front-end publishing option. First, go to Perfect Publisher Control Panel and click on the Component Options button. Find the option titled Cron job mode, enable CRON mode and set it to Yes. Below it, you will find the option named Secret word. In that box, you have to enter a password which will allow your CRON job to convince Perfect Publisher that it has the right to publish from the call. After you do it, click the Save button on top to save the settings and close the dialog.

Control Panel - Options

Enable Cron mode

TIP

About Base URL Override, it refers to your site domain https://www.yoursite.com. For instance, on our site, Base URL Override is https://www.extly.com (opens new window).

TIP

Use only lower- and upper-case alphanumeric characters (0-9, a-z, A-Z) in your secret key. Other characters may need to be manually URL-encoded in the CRON job's command-line. This is error-prone and can cause the publishing operation never to start even though you'll be quite sure that you have done everything correctly.

Most hosts offer a control panel of some kind. There has to be a section for something like "CRON Jobs", "scheduled tasks", and the like. The help screen in there describes how to set up a scheduled job. One missing part for you would be the command to issue. Simply, put the URL in there is not going to work.

If your host only supports entering a URL in its "CRON" feature, this will most likely not work with Perfect Publisher. There is no workaround. It is a hard limitation imposed by your host.

# Front-end processing with CRON based on wget command

If you are on a UNIX-style OS host (usually, a Linux host), you most probably have access to a command-line utility called wget.

Sample command for a specific platform:

TIP

Do not forget to surround the URL in double-quotes. If you don't, the command will fail, and it will be your fault! The reason is that the ampersand is also used to separate multiple commands in a single command-line. If you don't use the double-quotes at the start and end of the publishing URL, your host will think you tried to run multiple commands and load your site's homepage instead of the front-end publishing URL.

If you are unsure, check with your host. Sometimes you have to get from it the full path to wget for CRON to work, thus turning the above command-line into something like:

Contact your host; they usually have a nifty help page for all this stuff. Read also the section on CRON jobs below.

wget is a multi-platform command-line utility program that is not included with all operating systems. The wget homepage is here: https://www.gnu.org/software/wget/wget.html (opens new window).

TIP

The ampersands above should be written as a single ampersand, not as an HTML entity (&). Failure to do so will result in a 403: Forbidden error message, and no publishing will occur. This is not a bug; it is the way wget works.

# Using EasyCron to automate your publishing

TIP

EasyCron (opens new window) is an online Cron Service.

  • Trusted by the Pros.
  • Save your time.
  • Easy to reason about.
  • Alternative to Linux Cron.

EasyCron offers a poweful set of functions:

  • Standard Cron expression
  • 3 ways to specify execution time
  • Email Notification
  • Cron Job Execution Logs
  • Execution Time Prediction
  • Separate Failure Logs
  • Customize HTTP Method
  • Customize HTTP Headers
  • Powerful API
  • Output Regexp Matching
  • Webhook
  • Configure Timeout
  • Timezone Adaptable
  • User-Friendly Interface
  • No Need to Install

Assuming that you have already bought some credits on the EasyCron, here is how to automate your publishing using their service.

Before beginning to use this feature, you must set up Perfect Publisher to support the front-end publishing option. First, go to Perfect Publisher Control Panel and click on the Component Options button. Find the option titled Cron job mode, enable Cron mode and set it to Yes. Below it, you will find the option named Secret word. In that box, you have to enter a password which will allow your CRON job to convince Perfect Publisher that it has the right to publish from the call. After you do it, click the Save button on top to save the settings and close the dialog.

Control Panel - Options

Enable Cron mode

We strongly recommend using only alphanumeric characters, i.e. 0-9, a-z and A-Z. For the sake of this example, we will assume that you have entered ak33b4s3cRet in that field. We will also assume that your site is accessible through the URL https://www.example.com.

Log in to the EasyCron. In the CRON area, click on the New Cron button. Here's what you have to enter at EasyCron interface:

Name of Cron job: anything you like, e.g.,, "Perfect Publisher www.example.com"

Timeout: 180sec; if the publishing doesn't complete, increase it. Most sites will work with a setting of 180 or 600 here. If you have many channels and feeds which take more than 5 minutes to process, you might consider using Perfect Publisher native CRON script (perfect-publisher-cronjob.php) instead, as it is much more cost-effective.

Url you want to execute: https://www.example.com/index.php?option=com_autotweet&view=cron&task=run&key=ak33b4s3cRet

Login and Password: Leave them blank

Execution time (the grid below the other settings): Select when you want your CRON job to run

Alerts: If you have already set up alert methods in the EasyCron interface, we recommend choosing an alert method here and not checking the "Only on error" so that you always get a notification when the publishing CRON job runs.

Now click on Submit, and you are all set up!

# Using the front-end publishing in SiteGround and other hosts using cURL instead of wget

Finding the correct command to issue for the CRON job is tricky. This recipe applies not only to SiteGround (opens new window) but many other commercial hosts as well.

In the CPanel for SiteGround (opens new window) there is a Cron job option, you create a Cron job using that and use:

as your command.

# Using the front-end publishing in SiteGround and other hosts using lynx instead of wget

Lynx is a text-based browser that is installed in most hosting environments.

On most Linux systems, you can simply run the commands below. We would recommend running the CRON every thirty (30) minutes or less. On a busy site, you might want to run it every ten (10) minutes. The more frequently you run it, the less load there will be on the server.

If you do not have Lynx installed, you can use other alternatives such as wget, detailed above.

Don't worry, this operation runs very fast and has a minimal impact on the server, equivalent to a typical single page load.

# Setting Up Cron Job in cPanel

To add a new Cron Job in cPanel, log in to your cPanel and click Cronjobs under the Advanced section as the screenshot below.

To add a new CronJob in cPanel

After clicking Cronjobs, you will be directed to a page similar to the one below. In this example, click Standard to proceed.

After clicking Cronjobs, click Standard to proceed

Enter the following command in the Command to run field on the screen shown below it:

Select Every Five Minutes, Every Hour, Every Day, Every Month, and Every Week Day so that the action above will be executed every five (5) minutes perpetually.

Select Every Five Minutes, Every Hour, Every Day, Every Month, and Every Week Day

TIP

Users report that they get no joy using this script on GoDaddy hosting.

If you have access to the command-line version of PHP, Perfect Publisher Basic or PRO include an even better - and faster - way of publishing your messages. All Perfect Publisher Basic or PRO releases include the file cli/perfect-publisher-cronjob.php, which can be run from the command-line PHP interface (PHP CLI). In contrast with previous releases, it doesn't require the front-end publishing to work; it is self-contained, native publishing for your Joomla!™ site, even if your web server is down!

To schedule a post, you will have to use the following command-line to your host's CRON interface:

where /usr/local/bin/php is the path to your PHP CLI executable and /home/USER/webroot is the absolute path to your website's root. You can get this information from your host.

To give some examples, we will assume that your PHP CLI binary is located in /usr/local/bin/php - a common setting among hosts - and that your website's root is located at /home/johndoe/httpdocs.

Special considerations:

  • Most hosts do not impose a time limit on scripts running from the command-line. If your host does and the limit is less than the required time to publish from your site, the job will fail.
  • This script is not meant to run from a web interface. If your host only provides access to the CGI or FastCGI PHP binaries, perfect-publisher-cronjob.php will not work with them. The solution to this issue is tied to the time constraint detailed above.
  • Some servers do not fully support this publishing method. The usual symptoms will be a job that starts but is intermittently or consistently aborted in mid-process without any further error messages and no indication of something going wrong. In such a case, trying running the publishing or feeds import from the back-end of your site will work properly.

# Setting up a CRON job on cPanel

Go to your cPanel main page and choose the CRON Jobs icon from the Advanced pane. In the Add New CRON Job box on the page which loads, enter the following information:

  • Common Settings, Choose the frequency of your publishing, for example, once per day.
  • Command Enter your publishing command. Usually, you have to use something like:

where myusername is your account's user name (most probably the same you use to login to cPanel). Do note the path for the PHP command-line executable: /usr/bin/php-cli. This is the default location of the correct executable file for cPanel and later. Your host may use a different path to the executable. If the command never runs, ask them. We can't help you with that; only those who have set up the server know the changes they have made to the default setup.

Finally, click the Add New Cron Job button to activate the CRON job.