mediagoblin-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [GMG-Devel] Plugin for page view counter


From: Christopher Allan Webber
Subject: Re: [GMG-Devel] Plugin for page view counter
Date: Mon, 14 Jan 2013 14:41:48 -0600
User-agent: mu4e 0.9.9-dev6; emacs 24.0.92.1

One thing that was discussed on IRC is that maybe the Redis solution is
the best solution technically, but adding Redis as a depenency might be
too much infrastructure for many people deploying MediaGoblin.

It's probably good to keep this separated as a plugin, and implement one
or more of the following solutions:
 - incrementing via celery task that does increment in SQL
 - pushing to something like Redis, occasionally aggregating and
   serializing in SQL
 - simply using piwik but pulling from the piwik database

will kahn-greene writes:

> Or adding something that does fast atomic counting. I've seen Redis used 
> for that in a few places. Then you dump the results of that to the db 
> periodically so it's persisted. Not sure if there's anything in the GNU 
> MediaGoblin infrastructure already that can do this.
>
> /will
>
>
> On 01/14/2013 12:06 PM, Christopher Allan Webber wrote:
>> Yes, you're right, celery is a better solution to processing these
>> things!
>>
>> Nathan Yergler writes:
>>
>>> I'd like to advocate for *not* doing a database write on a page view,
>>> particularly not one that's going to be subject to a high degree of
>>> lock contention on a higher traffic site. Write-on-GET should be a
>>> signal to think about things carefully, as it imposes a limit on how
>>> you can scale the software. If I recall correctly the stack still has
>>> Celery in it; tossing a job into the queue and accepting some latency
>>> with the stats isn't free, but it would reduce the amount of
>>> contention.
>>>
>>> Also keep in mind that either proxying the media file to trigger a
>>> stats increment, or embedding it in the HTML surrounding the media,
>>> mean you can't do any caching in front of the application: every
>>> request needs to hit the application server.
>>>
>>> Best,
>>>
>>> NRY
>>>
>>> On Mon, Jan 14, 2013 at 7:36 AM, Christopher Allan Webber
>>> <address@hidden> wrote:
>>>> Tiberiu C. Turbureanu writes:
>>>>
>>>>> Thanks for the pointer, Chris!
>>>>>
>>>>> I need a way to increment the view counter only when the media file is
>>>>> loaded. How can I achieve this?
>>>>
>>>> I'm not sure what you mean.  Do you mean:
>>>>   - only when the page is loaded
>>>>   - or something more complex: only if someone clicks "play" on a song or
>>>>     video?
>>>>
>>>> The solution I was talking about involves number one.  As for number
>>>> two, that would be a lot more complex, but I imagine it could be
>>>> achieved via one of two things:
>>>>   - Easier solution: javascript callback on play that notifies the
>>>>     browser of playing starting.
>>>>   - Much, much trickier solution: you might be able to set up a proxy
>>>>     view before serving the actual video that first increments the file,
>>>>     but then tells the web server to send the video via X-Sendfile.  That
>>>>     sounds too complex to me though, and might be especially hard if a
>>>>     browser "seeks" the media to read just a few frames to get a preview
>>>>     image or do some preloading, which it might do in some
>>>>     configurations.
>>>>
>>>>> Also, Sebastian Spaeth told me that at the moment there is no way for a
>>>>> plugin to alter the template of the media page, but a hook mechanism is
>>>>> being discussed. That why until the implementation is ready, I think I
>>>>> will go for a new page under a route like this
>>>>> /u/<string:user>/m/<string:media>/viewcount.
>>>>
>>>> Spaetz is right, there's no present solution to this.  After I go
>>>> through my merge-a-thon this week though, I'll be switching onto some
>>>> plugin development, and will be looking into a solution to allow plugins
>>>> to extend pages more easily.
>>>>
>>>>   - Chris
>>>> _______________________________________________
>>>> devel mailing list
>>>> address@hidden
>>>> http://lists.mediagoblin.org/listinfo/devel
>>
>> _______________________________________________
>> devel mailing list
>> address@hidden
>> http://lists.mediagoblin.org/listinfo/devel
>>
> _______________________________________________
> devel mailing list
> address@hidden
> http://lists.mediagoblin.org/listinfo/devel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]