[Owncloud] Background Jobs
Arthur Schiwon
blizzz at owncloud.com
Tue Aug 21 16:02:03 UTC 2012
On 08/15/2012 01:56 AM, Alessandro Cosentino wrote:
> @Jakob: maybe I am missing something here, but is there a way for the
> app developer to specify how often the job is executed?
I'd guess it is up to the (web)cron settings. As far as i can see there
are no parameters to pass, so (for now) you should take care about it in
your method.
@Jakob: is it advisable to check if background jobs are enabled or did
you implement a fallback (e.g. checking after every call if there is
something to do?). Then it might make sense to provide an API call.
Cheers
Arthur
>
> Thanks,
> Alessandro
>
>
> On Mon, Aug 13, 2012 at 9:50 AM, Klaas Freitag <freitag at owncloud.com> wrote:
>> On 13.08.2012 16:23, Jakob Sack wrote:
>>>
>>> Hi Klaas,
>>>
>>> maybe I chose the wrong words: To disable background jobs you do not
>>> have to edit the program code but you must set the appconfig value
>>> core:backgroundjobs_mode to "none".
>>
>> Ah, ok, sorry...
>>
>> IMO the important point is that an update does not kick out such things, but
>> you probably have taken care :)
>>
>> Thanks,
>>
>> Klaas
>>
>>
>>>
>>> Am 13.08.2012 11:49, schrieb Klaas Freitag:
>>>>
>>>> On 12.08.2012 11:29, Jakob Sack wrote:
>>>>>
>>>>> I removed the option from the UI. In the program code the option "none"
>>>>> is still usable.
>>>>
>>>> Come on, isn't that the worst of all possible solutions? ;-)
>>>>
>>>> Changing the program code is not the best way to do app configuration
>>>> as the change will be gone with the next update. Why not put an value
>>>> in config.php if we do not want a GUI option?
>>>>
>>>> I think there should be an option to set up ownCloud completely stand
>>>> alone, without having the system seeking out for other web services.
>>>>
>>>> Or do I get something wrong?
>>>>
>>>> Thx,
>>>> Klaas
>>>>
>>>>>
>>>>> Am 11.08.2012 23:08, schrieb Jan-Christoph Borchardt:
>>>>>>
>>>>>> Ah sorry, I phrased it wrong. I didn’t mean »just use AJAX all the
>>>>>> time and remove the option for cron jobs«, I meant »AJAX is always
>>>>>> available and has no negative effect, so let’s just not have an option
>>>>>> to deactivate background jobs«.
>>>>>> Of course if the server supports it, cron should be used.
>>>>>>
>>>>>>
>>>>>> TL;DR: Nice, let’s remove the option to deactivate background jobs.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Sat, Aug 11, 2012 at 2:03 PM, Jakob Sack <mail at jakobsack.de> wrote:
>>>>>>>
>>>>>>> Hi Jan,
>>>>>>>
>>>>>>> thank you for the praise.
>>>>>>> as far as I know there is no reason for completely disabling
>>>>>>> background
>>>>>>> jobs.
>>>>>>> I strongly disaggree with you regarding your second argument. Using
>>>>>>> AJAX
>>>>>>> always is a bad idea. Exactly spoken, there are at least two problems
>>>>>>> with
>>>>>>> the ajax solution: if you installed ownCloud on a shared web hosting
>>>>>>> service
>>>>>>> and use it alone or with your family chances are high that there are
>>>>>>> periods
>>>>>>> with no one being online. Then you could miss news that are meant
>>>>>>> to be
>>>>>>> fetched every now and then. In this case a webcron serice would be
>>>>>>> perfect.
>>>>>>> On the other hand a large setup with several hundred users - we both
>>>>>>> know
>>>>>>> that they exist - should not be bombed with another hundred requests
>>>>>>> every
>>>>>>> minute. In this case it's better to use the systems cron service
>>>>>>> which does
>>>>>>> not have the limitations apaches processes might have.
>>>>>>> regards,
>>>>>>>
>>>>>>> Jakob
>>>>>>>
>>>>>>> Am 11.08.2012 20:30, schrieb Jan-Christoph Borchardt:
>>>>>>>
>>>>>>>> Awesoooome! Does that mean that step-by-step, all the »refresh« and
>>>>>>>> »rescan« buttons can go away?
>>>>>>>>
>>>>>>>> Just one thing: You say »there are four options: using the systems
>>>>>>>> cron feature, using a webcron service, using AJAX or not using
>>>>>>>> background jobs at all.«
>>>>>>>> Why even have the possibility to deactivate it? It’s a great function
>>>>>>>> which improves the experience silently, as with doing away with the
>>>>>>>> need for refresh buttons. And since doing it via AJAX is a good
>>>>>>>> default there’s no reason to not just do it like that always – or is
>>>>>>>> there?
>>>>>>>>
>>>>>>>>
>>>>>>>> On Sat, Aug 11, 2012 at 7:07 AM, Jakob Sack <mail at jakobsack.de>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> yesterday I pushed the new Background Jobs system to ownCloud
>>>>>>>>> master. As
>>>>>>>>> you
>>>>>>>>> can guess from the name, this feature allows ownCloud to do certain
>>>>>>>>> tasks
>>>>>>>>> in
>>>>>>>>> the background without blocking the UI. It also makes it possible to
>>>>>>>>> execute
>>>>>>>>> some tasks without any need of user interaction, for example
>>>>>>>>> fetching
>>>>>>>>> news
>>>>>>>>> while the user is on holidays.
>>>>>>>>> From a users perspective there is not much to pay attention to,
>>>>>>>>> background
>>>>>>>>> jobs tries to get out of the way as much as possible. On the other
>>>>>>>>> hand,
>>>>>>>>> administrators can use the settings interface to set the way
>>>>>>>>> background
>>>>>>>>> jobs
>>>>>>>>> are executed. There are four options: using the systems cron
>>>>>>>>> feature,
>>>>>>>>> using
>>>>>>>>> a webcron service, using AJAX or not using background jobs at all.
>>>>>>>>> Using
>>>>>>>>> the
>>>>>>>>> systems cron feature is the preferred way. It allows regular
>>>>>>>>> executed
>>>>>>>>> jobs
>>>>>>>>> without the limitations the web server may have. The second
>>>>>>>>> recommended
>>>>>>>>> option is the webcron implementation. By registering your ownCloud
>>>>>>>>> cron.php
>>>>>>>>> address at a webcron service like [1] you ensure that background
>>>>>>>>> jobs
>>>>>>>>> will
>>>>>>>>> be executed regularly. Using AJAX is the default option, although
>>>>>>>>> the
>>>>>>>>> least
>>>>>>>>> reliable. Every time a user visits the page a single background
>>>>>>>>> job gets
>>>>>>>>> executed. The disadvantage of this solution compared to the webcron
>>>>>>>>> service
>>>>>>>>> is that it requires regular visits of the page. The reason for
>>>>>>>>> making
>>>>>>>>> this
>>>>>>>>> option the default is that this solution simply does not require
>>>>>>>>> access
>>>>>>>>> to
>>>>>>>>> the system or registration on some third party service.
>>>>>>>>> When you are implementing background jobs in your app, please be
>>>>>>>>> aware of
>>>>>>>>> the difference between the AJAX/Webcron and the cron
>>>>>>>>> implementation! The
>>>>>>>>> AJAX/Webcron implementation gets started by
>>>>>>>>> your-favorite-web-server, so
>>>>>>>>> you
>>>>>>>>> might have some limitations on execution time or memory. These
>>>>>>>>> limitations
>>>>>>>>> do not affect the system cron implementation, which calls php
>>>>>>>>> from the
>>>>>>>>> command line. As a consequence, you should split large tasks when
>>>>>>>>> not
>>>>>>>>> using
>>>>>>>>> system cron. You can check whether the app has been started by
>>>>>>>>> systems
>>>>>>>>> cron
>>>>>>>>> by checking if OC::$CLI is set to true.
>>>>>>>>> If you want to use background jobs in your app, you have to
>>>>>>>>> register
>>>>>>>>> them
>>>>>>>>> in appinfo/app.php by calling OCP\BackgroundJobs::addRegularTask(
>>>>>>>>> $class,
>>>>>>>>> $method ).
>>>>>>>>> The first app featuring a background job is the news app being
>>>>>>>>> implemented
>>>>>>>>> by Alessandro Cosentino (zimba12). If you want to use background
>>>>>>>>> jobs in
>>>>>>>>> your app, have a look at the apps:newsapp repository first! There
>>>>>>>>> you
>>>>>>>>> will
>>>>>>>>> not only find a working example, but also a strategy of how to deal
>>>>>>>>> with
>>>>>>>>> the
>>>>>>>>> different requirements of AJAX/Webcron and the system cron.
>>>>>>>>> Regards,
>>>>>>>>>
>>>>>>>>> Jakob
>>>>>>>>>
>>>>>>>>> 1: http://www.easycron.com/
>>>>>>>>> _______________________________________________
>>>>>>>>> Owncloud mailing list
>>>>>>>>> Owncloud at kde.org
>>>>>>>>> https://mail.kde.org/mailman/listinfo/owncloud
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Owncloud mailing list
>>>>>>>> Owncloud at kde.org
>>>>>>>> https://mail.kde.org/mailman/listinfo/owncloud
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Owncloud mailing list
>>>>>>> Owncloud at kde.org
>>>>>>> https://mail.kde.org/mailman/listinfo/owncloud
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Owncloud mailing list
>>>>> Owncloud at kde.org
>>>>> https://mail.kde.org/mailman/listinfo/owncloud
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> Owncloud mailing list
>>>> Owncloud at kde.org
>>>> https://mail.kde.org/mailman/listinfo/owncloud
>>>
>>>
>>> _______________________________________________
>>> Owncloud mailing list
>>> Owncloud at kde.org
>>> https://mail.kde.org/mailman/listinfo/owncloud
>>
>>
>>
>> _______________________________________________
>> Owncloud mailing list
>> Owncloud at kde.org
>> https://mail.kde.org/mailman/listinfo/owncloud
> _______________________________________________
> Owncloud mailing list
> Owncloud at kde.org
> https://mail.kde.org/mailman/listinfo/owncloud
>
More information about the Owncloud
mailing list