I used the Warden CLI tool to orchestrate Magento (Adobe Commerce) environments for local development use. Recently I needed to upgrade my blog and one other site, both based on WordPress. I realized that my old local development stack based on the Homebrew stopped working some time ago. This was the time to move to a more solid solution.
(more…)cli
Starting and stopping brew services using BitBar plugin
I was looking for a UI solution to easily start and stop homebrew services. Check out what I found – a handy app with ready to use plugins.
(more…)
How to easily dump Magento database with n98-magerun
It looks I felt in love with a n98-magerun tool. I already talked about my favourite n98-magerun commands and about a command which allows to generate fake customer data. Today I’m going to continue n98-magerun post series and focus on a command which allows to make database dump very easily. n98-magerun.phar db:dump in addition to commands mentioned in previous blog posts is another one must have.
The command allows to dump a database very easily. Similar to a n98magerun mysql-client command, it doesn’t require me to enter a password and look for any connection details. It automatically generates a dump file name based on a current date and time, allows to use built-in filters to exclude big utility tables and finally creates an archive after completing the dump.
Sample calls may look as follows:
n98-magerun.phar db:dump n98-magerun.phar db:dump --strip "@stripped @ee_changelog @idx" n98-magerun.phar db:dump --strip "@stripped @ee_changelog @idx" --compression=gz
First call produced a 5.1 GB file containing all database tables. Second stripped a bunch of database tables such as changelog tables, index tables, reports or logs tables and it resulted in reducing the database dump to 3.1 GB. Third one called with a compression option reduced size to about 251 MB. Third gain is expected and it could be also achieved with one additional gz command call, but it’s really convenient to do a gzipped dump in one command call.
Stripping not needed database tables can save gigabytes of transfer when working with a big database. However, it won’t fit all use cases, for example in which you need to prepare a dump to debug index problems where you need to get an exact state of a Magento application database.
Bring a lot of customers to Magento store… using n98-magerun
Recently I talked about my favourite n98-magerun commands, this time I’ll continue that topic. Let’s see how to easily add a lot of customers to a Magento store. Of course it’s about adding fake data for testing purposes, unfortunately n98-magerun doesn’t help in bringing real ones :-)
Command customer:create:dummy allows you to create dummy customer accounts for testing purposes. It supports a few different locales and allows to generate any amount of accounts.
$ n98-magerun.phar customer:create:dummy 1000 pl_PL […] Please select a website: 1
It took about 13 minutes to create 1000 customers, so it is able to fill a database with thousands of customers in a few hours. Sample output looks as follows:
Customer wieczorek.julia.152196@example.org with password QAELhMP! successfully created Customer fabian.291162@example.net with password 8grCBZ9$ successfully created Customer emil.108200@example.com with password ARWRJALy successfully created […]
Internally it uses https://github.com/fzaninotto/Faker. That library allows it to generate other assets like texts (either lorem ipsum or more real ones), addresses, phone numbers, companies, date and times, internet accounts, payment data and a few others.
I would love to see the ability to generate products using Faker and have a few more dummy methods incorporated into n98-magerun. The ability to generate products, customer addresses, maybe sales data would be great. However, the ability to generate fake customer accounts helps a lot and it’s a great start.
Top 10 n98-magerun command calls
n98-magerun is a very useful tool when working on Magento stores. It saves time and makes a lot of Magento development related tasks much easier. Check out a list of my 10 favorite commands.
1. dev:module:rewrite:conflicts
This one is a must have. It’s a good replacement for an Extension Conflict module which I have been using before I found the n98-magerun. It shows rewrite conflicts in a clean ASCII table:
n98-magerun.phar dev:module:rewrite:conflicts
2. mysql-client
Command opens a mysql command line client without need of looking for a host, a port and credentials in local.xml file.
n98-magerun.phar mysql-client
However, it doesn’t work on a server with proc_open() function disabled.
3. cache:flush
It flushes all Magento caches. If a store uses filesystem cache, this command isn’t much more helpful than simple rm -rf var/cache* var/full_page_cache/* . However, when using the n98-magerun I don’t need to wonder what cache type is used in a store and this command provides an interface working for all cache types.
n98-magerun.phar cache:flush
The only glitch is that in some cases it doesn’t clean cache if file permissions are not correct.
4. sys:cron:list
Prints list of all active CRON jobs configured in a Magento store. It shows output in readable way, showing a job code, minutes, hours, days, month and week days.
n98-magerun.phar sys:cron:list
Another usable command related to CRON may be sys:cron:history which lists recently finished CRON jobs.
5. sys:setup:run
It’s useful to run database updates from a command line when installing an extension or upgrading Magento.
n98-magerun.phar sys:setup:run
Recently I used that when working on a Magento upgrade from 1.12 to 1.14. Frontend kept throwing error as PHP code was trying to use things which haven’t existed in the database yet, but sys:setup:run command dealt with that perfectly.
6. dev:theme:duplicates
This could be used when working on templates, to clean them from not needed files. I ran that command in 3 projects I’m working on and it found a few duplicated templates.
n98-magerun.phar dev:theme:duplicates enterprise/rocketweb base/default
7. sys:info
Command allows to quickly show an overall picture on the store. It shows a store edition and version, list of vendors coming from all code pools and a few other information. Additionally it shows basic factors which can determine the store size – amount of attributes, categories and products.
n98-magerun.phar sys:info
It’s handy when starting to work on an already existing site.
8. sys:check
It checks for missing system paths such as media/, var/ or a local.xml config file and checks if required PHP modules are installed. For example on my local server it keeps complaining about a missing index.php.sample file and about missing bytecode cache extension. I will need to get rid of this to get a nice green output :-)
n98-magerun.phar sys:check
Additionally it checks if each base URL contains dot, however I don’t get this part.
9. dev:console
This opens an interactive console with Magento initialized. It’s marked as experimental but works pretty well. It allows to run code in interactive way, most useful when I need to check multiple objects one by one eg. go through blog posts. For example to open console run:
n98-magerun.phar dev:console
And then run code to dump the blog post data:
Zend_Debug::dump(Mage::getModel('blog/post')->load(3)->debug()); Zend_Debug::dump(Mage::getModel('blog/post')->load(4)->debug()); Zend_Debug::dump(Mage::getModel('blog/post')->load(5)->debug());
Or order:
Zend_Debug::dump(Mage::getModel('sales/order')->load(109)->debug());
10. sys:modules:list
It lists all modules along with fields like code pool, key, version and status.
n98-magerun.phar sys:modules:list
Documentation says it’s possible to filter list by a code pool and a status, but I couldn’t get it working. It simply shows nothing when I use any filter. However, even without filtering it’s pretty useful.
I chose these 10 commands as most interesting, but there are many other handy tools: a command for working with database dumps, a command for debugging Magento configs and all toggle commands which allow to enable/disable things like a cache, a demo notice, template hints and many more.
Take a look on http://magerun.net to see all of them or better just play with the tool. Also make sure to subscribe my RSS feed or my twitter as soon I will talk more about cool n98-magerun use cases.