[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Savannah-hackers-public] PHP developer for savanah
From: |
Sahid Ferdjaoui |
Subject: |
Re: [Savannah-hackers-public] PHP developer for savanah |
Date: |
Sat, 3 May 2008 19:51:01 +0200 |
Hello
I have review people with full object.
exemple with category
Category::singleton ()->count () # return a number of category
Category::singleton ()->clear () # clear a category cache in memcached
Category::singleton ()->create ($name, ...) # create a new category
$objCatShot = Category::singleton ()->getCategoryByID ($category_id) #
return CategoryShot object
$objCatShot->name () #return the name of category
$objCatShot->count () # return a number of job in this category
$objCatShot->del () # for remove this category
$objCatShot->edit ($name) # for edit this category
for Job, now there is Job and JobShot classes
$objJobShot = $objCatShot->Job () # return a JobShot object of this
CategoryShot object
or
$objJobShot = Job::singleton ($category_id) # return a JobShot object
of this category id
$objJobShot->edit ($title, ...) # for edit this job
$objJobShot->del () # for remove this job
...
i have rewrite two functions for exemple (people/general.php):
function people_get_category_name($category_id)
{
$objCatShot = Category::singleton ()->getCategoryById ($category_id);
if (!is_object ($objCatShot))
{
return 'Invalid ID';
}
return $objCatShot->name ();
}
function people_show_category_table()
{
#show a list of categories in a table
#provide links to drill into a detail page that shows these categories
$title_arr=array();
$title_arr[]=_("Category");
$return = '';
$return .= html_build_list_table_top ($title_arr);
if (Category::singleton ()->count () < 1)
{
$return .= '<tr><td><h2>'._("No Categories Found").'</h2></td></tr>';
}
else
{
foreach (Category::singleton ()->fetch () as $i => $objCatShot)
{
$return .= '<tr class="'. utils_get_alt_row_color ($i)
.'"><td><a href="'.$GLOBALS['sys_home'].'people/?category_id='.
$objCatShot->ID ().'">'.
$objCatShot->name ().'</a> ('. $objCatShot->count ().')</td></tr>';
}
}
$return .= '</table>';
return $return;
}
it's OK, i continue ?
On Sat, May 3, 2008 at 2:46 PM, Sylvain Beucler <address@hidden> wrote:
> Hi,
>
> I dislike solution number 1 too :)
>
> But clearing the cache in add_job is not enough :/ Other functions can
> alter the cached data: when a user is renamed, when a group changes
> its group type or its name, when a job is removed, when a user is
> deleted, etc.
>
> I liked the idea from http://www.danga.com/memcached/ where the cache
> was always accurate (using getter+setter). I don't know how applicable
> this is for Savane.
>
> --
> Sylvain
>
>
>
>
> On Wed, Apr 30, 2008 at 10:36:22PM +0200, Sahid Ferdjaoui wrote:
> > ok,
> >
> > two solutions :
> >
> > - the "people category" data's doesn't need be always up to date.
> > - i add a function for clear cache in add_job
> >
> > i think the seconds methode is better :)
> >
> >
> >
> > On Wed, Apr 30, 2008 at 10:14 PM, Sylvain Beucler <address@hidden> wrote:
> > > Hi,
> > >
> > > This is a good start.
> > >
> > > One issue is that the cache is not invalidated when `people_job` is
> > > changed, which means Savannah can return inconsistent results for 5
> > > minutes.
> > >
> > > P.S.: please keep address@hidden in Cc: so that other
> > > people in the team can see what's going on :)
> > >
> > > --
> > > Sylvain
> > >
> > >
> > >
> > >
> > > On Wed, Apr 30, 2008 at 09:24:06PM +0200, Sahid Ferdjaoui wrote:
> > > > Hello Sylvain
> > > >
> > > > i have developed Cache abstract class
> > > > http://pastebin.funraill.org/ee9d39ff874d1adeca7653b9630e7af7/
> > > >
> > > > for the database, I think it, add two new functions :
> > > > db_cache_fetch (); and db_cache_row ();
> > > > view source :
> http://pastebin.funraill.org/73497bfce7ede4fa0d0fb5700de7e506/
> > > >
> > > > i have review people_show_category_table () with new function
> > > > http://pastebin.funraill.org/96c162c4fd92eca6cb718c366c216c8c/
> > > >
> > > > I wait your suggestion sylvain :)
> > > >
> > > > also i have add new memched debug's in init.php
> > > >
> > > > (sorry for my bad english)
> > > >
> > > > On Tue, Apr 29, 2008 at 7:40 PM, Sylvain Beucler <address@hidden>
> wrote:
> > > > > Hi,
> > > > >
> > > > > Reviewing /people is a good idea; we'll see and discuss how you
> > > > > envision introducing memcache support in the code.
> > > > >
> > > > > (A priori I think that memcache'd data need to be properly
> > > > > encapsulated (getter+setter) to avoid differences between MySQL and
> > > > > the memcache, and update the memcache whenever the data changes.)
> > > > >
> > > > >
> > > > > For the most often used queries: I enabled $sys_debug_sqlprofiler
> (as
> > > > > seen in include/database.php) at Savannah. The results are viewable
> > > > > through https://savannah.gnu.org/xcache/?type=1 (sort by 'Hits').
> > > > >
> > > > > --
> > > > > Sylvain
> > > > >
> > > > >
> > > > >
> > > > > On Tue, Apr 29, 2008 at 06:42:57PM +0200, Sahid Ferdjaoui wrote:
> > > > > > Hello Sylvain
> > > > > >
> > > > > > OK, I can try reduce MySQL load
> > > > > >
> > > > > > for begin, i try reviewing "/people", OK ?
> > > > > > or you can tell me, what are the primaries modules load MySQL.
> > > > > >
> > > > > >
> > > > > > On Tue, Apr 29, 2008 at 12:29 AM, Sahid Ferdjaoui
> <address@hidden> wrote:
> > > > > > > OK Sylvain thank,
> > > > > > >
> > > > > > > I try to install savannah and i try understand the actualy
> code :)
> > > > > > >
> > > > > > > good night
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Mon, Apr 28, 2008 at 8:30 PM, Sylvain Beucler
> <address@hidden> wrote:
> > > > > > > > Hi,
> > > > > > > >
> > > > > > > > Thanks for contributing to GNU :)
> > > > > > > >
> > > > > > > > We've assembled a list of "help needed" tasks at:
> > > > > > > > http://savannah.gnu.org/maintenance/SavaneTasks
> > > > > > > >
> > > > > > > > Can you read it and tell us what you are interested in?
> > > > > > > >
> > > > > > > >
> > > > > > > > Since you already used memcached, here's another idea just
> for you:
> > > > > > > > we'd like Savane to use memcached to reduce the MySQL
> load; the
> > > > > > > > criticil points are (IMHO):
> > > > > > > > - the code is not well encapsulated
> > > > > > > > - a lot of queries use JOINs, which I believe won't be
> easy to replace
> > > > > > > > with similar memcached calls
> > > > > > > > Suggestions/code appreciated ;)
> > > > > > > >
> > > > > > > > Hear from you soon,
> > > > > > > >
> > > > > > > > --
> > > > > > > > Sylvain
> > > > > > > >
> > > > > > > > > Subject: [gnu.org #360924] PHP developer for savanah
> > > > > > > > > From: Sahid Ferdjaoui via RT <address@hidden>
> > > > > > > > > Date: Sun, 27 Apr 2008 08:21:26 -0400
> > > > > > > > > Hello,
> > > > > > > > >
> > > > > > > > > I'm french, i'm 23 years, i'm passionte by open sources
> projects in
> > > > > > > > > particulary gnu project.
> > > > > > > > > Currently i'm computer programmer for comunity web site,
> developed
> > > > > > > > > with PHP, Apache, MySQL and Memcached.
> > > > > > > > > i have developed for this web site, a MySQL and
> Memcached abstracts
> > > > > > > > > classes, a secure payment's API with GUI's admin, SOAP
> and REST web
> > > > > > > > > services.
> > > > > > > > >
> > > > > > > > > if you want my CV contact me.
> > > > > > > > > you can see my french blog http://sahid.funraill.org
> > > > > > > > >
> > > > > > > > > Thanks
>
--
~sahid
http://sahid.funraill.org