Skip to content
homeport

Docs · Configure

Cron jobs and scheduled calls

Two different things. A cron job runs your own code on a schedule; your app sleeps between runs. A scheduled call has homeport make an HTTP request to any URL on a schedule, with no app running.

Cron jobs

Add one in an environment’s Settings → Cron jobs. Each run starts from your app’s live release, with its code, variables and size, and is stopped at its timeout. It doesn’t wake your app or keep it awake.

A cron job’s fields
FieldWhat it is
NameLowercase letters, digits and dashes, unique in the app.
CommandArguments to your app’s binary, with the same rules as a release command: no shell, so no quotes, && or variables. For Laravel, php-cli artisan reports:send.
ScheduleFive cron fields or a macro like @daily, or a preset. As you type, it is described in plain English with its next three runs.
Time zoneAny IANA zone, UTC by default. Runs keep wall-clock time across daylight saving changes.
Timeout10 seconds to an hour.
AlertsEmail the team’s owners on the first failure, timeout or missed run, and again when it recovers.
  • An app can have up to 25 jobs. A static site has none. Run now starts one by hand.
  • On Free a job runs every 15 minutes at most. On a paid plan, every minute.
  • A run that would start more than 2 minutes late, because the app’s previous run is still going, is recorded as missed rather than piling up.
  • Each job has a page with its newest 50 runs: status, duration, exit code and output. Its output is in the app’s Logs too.

Laravel’s scheduler

At each deploy, homeport reads your app’s schedule (php-cli artisan schedule:list) and offers its tasks in Settings, to import as jobs at their own times. Your app no longer has to wake every minute for schedule:run. Closures, queued job classes and tasks more often than once a minute can’t become jobs, and Settings says why for each.

What a run costs

A run is billed by the second at the compute rate, $0.015 per GB-hour, for its app’s memory, and 10 seconds at least. The app sleeps between runs, so you pay only while a run is going. A run that never started costs nothing. For example, a 512 MB app’s job that runs for 30 seconds every hour uses about 3 GB-hours a month: $0.05. On Free, runs are never billed; they count toward Free’s compute cap with your app’s own awake time.

Scheduled calls

A scheduled call is an HTTP request homeport makes on a schedule: to wake a webhook, refresh a cache through your API, or ping another service. No app of yours has to run to make it. Calls belong to the team, on its Scheduled calls page.

A scheduled call’s fields
FieldWhat it is
MethodGET, POST, PUT, PATCH, DELETE or HEAD.
AddressAn http or https address, without credentials in it.
HeadersUp to 20. Their values are encrypted and never shown again, so a token goes here.
BodyUp to 64 KB.
Schedule and time zoneAs a cron job’s: every 15 minutes at most on Free, every minute on a paid plan.
Timeout1 to 60 seconds, 30 at most on Free.
  • A 2xx answer is a success. Anything else fails, and says what it answered. Redirects are not followed.
  • Calls reach public addresses only, on ports 80, 443, 8080 and 8443: never a private or local network.
  • A team can have up to 50 calls. Alerts work as a cron job’s.

What calls cost

Scheduled calls per plan
PlanIncluded a monthPast that
Free10,000They stop until the month ends
Starter100,000$0.01 per 1,000
Growth1,000,000$0.01 per 1,000
Business10,000,000$0.01 per 1,000

Calls are billed per call. Every call made counts, whatever it answered; a missed call doesn’t. For example, a call to https://yourapp.com/api/refresh every 5 minutes is about 8,800 calls a month, inside even Free’s 10,000.