Background Tasks
It is a common requirement to be able to schedule the running of background scripts.
Typical uses of background scripts are the loading of data from external data sources, generating and emailing HTML reports, periodic database admin, data consolidation and analysis and much more.
Since Lianja 4.1.2 you can run background scripts written in Lianja/VFP, Python, PHP and/or JavaScript by specifying command line options to the lianjarun command.
These scripts run independently of Lianja but have full access to the Lianja Framework (GUI and non-GUI) including the Database and Recordset classes.
This provides the ability to schedule the running of scripts using cron on linux, task scheduler on windows or launchd on macOS.
You specify the input file using the -i (--input) command line switch and the output file using the -o (--output) command line switch.
You can, for example, generate an HTML report and email that to someone using the Amazon AWS Simple Email Service if you have an AWS account.
Examples:
Run a Lianja/VFP script in the current directory.
lianjarun -i myscript.dbo -o myreport.html
Run a python script in the lianjademo app.
lianjarun -i app:/lianjademo/lianjademo_pythondb.py -o myreport.html
Run a PHP script in the lianjademo app.
lianjarun -i app:/lianjademo/lianjademo_phpdb.php -o myreport.html
Run a JavaScript script in the lianjademo app.
lianjarun -i app:/lianjademo/lianjademo_javascriptdb.js -o myreport.html
Notice that these examples will access the development directories as they run lianjarun. If you want to access the runtime directories use the lianjarun command with the --runtime command line switch.
You can find a full list of command line switches here.
You can perform database admin tasks from the console or in background scripts.
The -c (--command) command line switch allows multiple commands to be concatenated into a script. Each line should be separated with a semi colon and no block statements are supported e.g if, for, do while etc.
lianjarun -c "open database southwind;select top 5 customerid,contactname,companyname \ from customers" CUSTOMERID CONTACTNAME COMPANYNAME ALFKI Maria Anders Alfreds Futterkiste ANATR Ana Trujillo Ana Trujillo Emparedado AROUT Thomas Hardy Around the Horn again BERGS Christina Berglund Berglunds snabbkop BLAUS Hannah Moos Bill's furniture store 5 records selected in <1ms lianja -c "backup database southwind;" lianja -c "optimize database southwind;"
If required you can redirect output using the -o switch.
lianjarun -c "open database southwind;select top 5 customerid,contactname,companyname \ from customers" -o mydata.txt