<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://www.drupalcoder.com/">
  <channel>
    <title>Drupal coder - Drupal blog of a developer living in Gent, Belgium</title>
    <link>http://www.drupalcoder.com/</link>
    <description>Drupal coder (drupalcoder.com) is a blog on all things Drupal in specific and LAMP on OS X in general. It is maintained by Davy Van Den Bremt. The goal of this blog is to log all interesting things that have crossed the writer's path while developing Drupal sites. It might be bugs, hints, tips, things you might have overlooked, caveats, ... about module development, theming, core hacking, ... Or it might be about the environment Drupal runs on or where the writer developed Drupal sides on, begin OS X, MAMP and Textmate.</description>
    <language>en</language>
          <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/drupalcoder" /><feedburner:info uri="drupalcoder" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
    <title>Three things we learned from indexing a Drupal site with millions of nodes in Apache SOLR</title>
    <link>http://feedproxy.google.com/~r/drupalcoder/~3/OTyJd5ZPZE4/832-three-things-we-learned-from-indexing-a-drupal-site-with-millions-of-nodes-in-apache-solr</link>
    <description>&lt;p&gt;For one of our clients, we are running a Drupal site with about a millions of nodes. Before launch, those nodes are imported from another database and then indexed into Apache SOLR. The total time to index all of these nodes in an empty SOLR instance is measured in days rather than hours or minutes.&lt;/p&gt;
&lt;p&gt;A bit too long to do this import regularly. So me and my (XDebug) profiler delved into the &lt;a href="http://drupal.org/project/apachesolr"&gt;Apache SOLR&lt;/a&gt; module code to look where we could scrape of a few hours/days of the execution time.&lt;/p&gt;
&lt;p&gt;Seemed like in our case, there were 3 components responsible for a large share of the execution time. Let's have a look.&lt;/p&gt;
&lt;p&gt;BTW. We are using the latest dev build of version 2 of the Apache SOLR module.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.drupalcoder.com/story/832-three-things-we-learned-from-indexing-a-drupal-site-with-millions-of-nodes-in-apache-solr" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=OTyJd5ZPZE4:2pMcbXI673c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=OTyJd5ZPZE4:2pMcbXI673c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=OTyJd5ZPZE4:2pMcbXI673c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=OTyJd5ZPZE4:2pMcbXI673c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=OTyJd5ZPZE4:2pMcbXI673c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=OTyJd5ZPZE4:2pMcbXI673c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=OTyJd5ZPZE4:2pMcbXI673c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=OTyJd5ZPZE4:2pMcbXI673c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/drupalcoder/~4/OTyJd5ZPZE4" height="1" width="1"/&gt;</description>
     <comments>http://www.drupalcoder.com/story/832-three-things-we-learned-from-indexing-a-drupal-site-with-millions-of-nodes-in-apache-solr#comments</comments>
 <category domain="http://www.drupalcoder.com/tags/apache-solr">Apache Solr</category>
 <category domain="http://www.drupalcoder.com/tags/drupal">Drupal</category>
 <category domain="http://www.drupalcoder.com/tags/search">search</category>
 <pubDate>Mon, 06 Sep 2010 15:05:15 +0000</pubDate>
 <dc:creator>Davy Van Den Bremt</dc:creator>
 <guid isPermaLink="false">832 at http://www.drupalcoder.com</guid>
  <feedburner:origLink>http://www.drupalcoder.com/story/832-three-things-we-learned-from-indexing-a-drupal-site-with-millions-of-nodes-in-apache-solr</feedburner:origLink></item>
  <item>
    <title>Keeping track of backlinks in Drupal 7</title>
    <link>http://feedproxy.google.com/~r/drupalcoder/~3/Nq-aBJQiz0c/820-keeping-track-of-backlinks-in-drupal-7</link>
    <description>&lt;p&gt;A popular feature request for sites that deal with a lot of content, is to  see for each page what other pages are linking back to it. This can be helpful when doing some SEO or cleaning up and rewriting old content.&lt;/p&gt;
&lt;p&gt;In Drupal 7 this is easily done. It exists where you wouldn't immediately expect it though: the core search module. Kind of mimicking how search bots like Google's indexer works, Drupal 7's search module now takes the amount of nodes linking back to another node to calculate the score for some result.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.drupalcoder.com/story/820-keeping-track-of-backlinks-in-drupal-7" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=Nq-aBJQiz0c:Js1DtBxpC9Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=Nq-aBJQiz0c:Js1DtBxpC9Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=Nq-aBJQiz0c:Js1DtBxpC9Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=Nq-aBJQiz0c:Js1DtBxpC9Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=Nq-aBJQiz0c:Js1DtBxpC9Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=Nq-aBJQiz0c:Js1DtBxpC9Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=Nq-aBJQiz0c:Js1DtBxpC9Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=Nq-aBJQiz0c:Js1DtBxpC9Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/drupalcoder/~4/Nq-aBJQiz0c" height="1" width="1"/&gt;</description>
     <comments>http://www.drupalcoder.com/story/820-keeping-track-of-backlinks-in-drupal-7#comments</comments>
 <category domain="http://www.drupalcoder.com/tags/drupal-7">Drupal 7</category>
 <category domain="http://www.drupalcoder.com/tags/drupal">Drupal</category>
 <category domain="http://www.drupalcoder.com/tags/maintenance">maintenance</category>
 <category domain="http://www.drupalcoder.com/tags/search">search</category>
 <category domain="http://www.drupalcoder.com/tags/seo">SEO</category>
 <pubDate>Sun, 22 Aug 2010 16:33:31 +0000</pubDate>
 <dc:creator>admin</dc:creator>
 <guid isPermaLink="false">820 at http://www.drupalcoder.com</guid>
  <feedburner:origLink>http://www.drupalcoder.com/story/820-keeping-track-of-backlinks-in-drupal-7</feedburner:origLink></item>
  <item>
    <title>Share your Mollom stats</title>
    <link>http://feedproxy.google.com/~r/drupalcoder/~3/sZwpaEM5dps/759-share-your-mollom-stats</link>
    <description>&lt;p&gt;A &lt;a href="http://twitter.com/mollom/status/14429570207"&gt;request&lt;/a&gt; was just sent out on Mollom's Twitter account to help them spread the word on Mollom. Since I've been an extremely satisfied user of this (free) anti-spam service for about 2 years now, I immediately added a link back to them in the footer of this blog. But I decided that's not enough. So I'd like to start a little meme here. &lt;/p&gt;
&lt;p&gt;If you're happy about Mollom, just shout it out on Twitter, Facebook, your blog, ... by putting up a screenshot of your stats and saying how many spam has been caught by Mollom. You can find the stats of your site on your Mollom account. If you're using Drupal, you can find them under Administer &gt; Reports &gt; Mollom Statistics.&lt;/p&gt;
&lt;p&gt;If you're using Twitter, use the hashtag &lt;code&gt;#mollomstats&lt;/code&gt;. I'm looking forward see how much crap content Mollom has spared us from.&lt;/p&gt;
&lt;p&gt;I'll give the example by being the first...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.drupalcoder.com/story/759-share-your-mollom-stats" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=sZwpaEM5dps:wT1gbWRbSLM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=sZwpaEM5dps:wT1gbWRbSLM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=sZwpaEM5dps:wT1gbWRbSLM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=sZwpaEM5dps:wT1gbWRbSLM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=sZwpaEM5dps:wT1gbWRbSLM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=sZwpaEM5dps:wT1gbWRbSLM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=sZwpaEM5dps:wT1gbWRbSLM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=sZwpaEM5dps:wT1gbWRbSLM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/drupalcoder/~4/sZwpaEM5dps" height="1" width="1"/&gt;</description>
     <comments>http://www.drupalcoder.com/story/759-share-your-mollom-stats#comments</comments>
 <category domain="http://www.drupalcoder.com/tags/anti-spam">anti spam</category>
 <category domain="http://www.drupalcoder.com/tags/drupal">Drupal</category>
 <category domain="http://www.drupalcoder.com/tags/mollom">Mollom</category>
 <pubDate>Fri, 21 May 2010 19:15:34 +0000</pubDate>
 <dc:creator>Davy Van Den Bremt</dc:creator>
 <guid isPermaLink="false">759 at http://www.drupalcoder.com</guid>
  <feedburner:origLink>http://www.drupalcoder.com/story/759-share-your-mollom-stats</feedburner:origLink></item>
  <item>
    <title>An overview of Drupal's cache_clear_all uses</title>
    <link>http://feedproxy.google.com/~r/drupalcoder/~3/2DsTbrzpeVA/746-an-overview-of-drupals-cacheclearall-uses</link>
    <description>&lt;p&gt;Drupal has a very simple, yet powerful (low level) caching system. It provides 3 functions that should please all you &lt;a href="http://api.drupal.org/api/drupal/includes--cache.inc/6"&gt;caching&lt;/a&gt; needs: &lt;a href="http://api.drupal.org/api/function/cache_get/6"&gt;&lt;code&gt;cache_get&lt;/code&gt;&lt;/a&gt;, &lt;a href="http://api.drupal.org/api/function/cache_set/6"&gt;&lt;code&gt;cache_set&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://api.drupal.org/api/function/cache_clear_all/6"&gt;&lt;code&gt;cache_clear_all&lt;/code&gt;&lt;/a&gt;. The first two are pretty straight forward to use, but the third one might take some time to wrap your head around.&lt;/p&gt;
&lt;p&gt;It accepts 3 argument: a cache ID, table cache and a wilcard boolean. Each combination of these 3 has a very different result. Here's an overview of all combinations.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.drupalcoder.com/story/746-an-overview-of-drupals-cacheclearall-uses" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=2DsTbrzpeVA:UDJ2PqeJFiQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=2DsTbrzpeVA:UDJ2PqeJFiQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=2DsTbrzpeVA:UDJ2PqeJFiQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=2DsTbrzpeVA:UDJ2PqeJFiQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=2DsTbrzpeVA:UDJ2PqeJFiQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=2DsTbrzpeVA:UDJ2PqeJFiQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=2DsTbrzpeVA:UDJ2PqeJFiQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=2DsTbrzpeVA:UDJ2PqeJFiQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/drupalcoder/~4/2DsTbrzpeVA" height="1" width="1"/&gt;</description>
     <comments>http://www.drupalcoder.com/story/746-an-overview-of-drupals-cacheclearall-uses#comments</comments>
 <category domain="http://www.drupalcoder.com/tags/drupal">Drupal</category>
 <category domain="http://www.drupalcoder.com/tags/performance">performance</category>
 <pubDate>Wed, 19 May 2010 20:10:29 +0000</pubDate>
 <dc:creator>Davy Van Den Bremt</dc:creator>
 <guid isPermaLink="false">746 at http://www.drupalcoder.com</guid>
  <feedburner:origLink>http://www.drupalcoder.com/story/746-an-overview-of-drupals-cacheclearall-uses</feedburner:origLink></item>
  <item>
    <title>How to define page callbacks that you don't want to render using page template in Drupal?</title>
    <link>http://feedproxy.google.com/~r/drupalcoder/~3/pQXrsrGNmuE/718-how-to-define-page-callbacks-that-dont-want-to-render-using-page-template-in-drupal</link>
    <description>&lt;p&gt;Defining custom pages in your Drupal module is easy using &lt;a href="http://api.drupal.org/api/function/hook_menu/6"&gt;&lt;code&gt;hook_menu&lt;/code&gt;&lt;/a&gt; and a callback function. Let's have a look at an example.&lt;/p&gt;
&lt;pre class="brush:php"&gt;
/**
 * Implementation of hook_menu().
 */
function my_module_menu() {
  $items['hello'] = array(
    'title' =&amp;gt; 'Hello world',
    'page callback' =&amp;gt; 'my_module_page',
    'access callback' =&amp;gt; TRUE,
  );
}

function my_module_page() {
  return t('Hello world');
}
&lt;/pre&gt;&lt;p&gt;
In this example, going to &lt;code&gt;/hello&lt;/code&gt; will show you a page saying "hello world" rendered using your page template. So this page will display with your logo, blocks, footer, ...&lt;/p&gt;
&lt;p&gt;In some cases you don't want this. Mostly in case you won't return HTML but something like XML, JSON, ... Let's have a look at two ways how this can be accomplished.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.drupalcoder.com/story/718-how-to-define-page-callbacks-that-dont-want-to-render-using-page-template-in-drupal" target="_blank"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=pQXrsrGNmuE:bsapB9UWiAE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=pQXrsrGNmuE:bsapB9UWiAE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=pQXrsrGNmuE:bsapB9UWiAE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=pQXrsrGNmuE:bsapB9UWiAE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=pQXrsrGNmuE:bsapB9UWiAE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=pQXrsrGNmuE:bsapB9UWiAE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/drupalcoder?a=pQXrsrGNmuE:bsapB9UWiAE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/drupalcoder?i=pQXrsrGNmuE:bsapB9UWiAE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/drupalcoder/~4/pQXrsrGNmuE" height="1" width="1"/&gt;</description>
     <comments>http://www.drupalcoder.com/story/718-how-to-define-page-callbacks-that-dont-want-to-render-using-page-template-in-drupal#comments</comments>
 <category domain="http://www.drupalcoder.com/tags/drupal">Drupal</category>
 <category domain="http://www.drupalcoder.com/tags/module-development">module development</category>
 <pubDate>Fri, 14 May 2010 09:46:11 +0000</pubDate>
 <dc:creator>Davy Van Den Bremt</dc:creator>
 <guid isPermaLink="false">718 at http://www.drupalcoder.com</guid>
  <feedburner:origLink>http://www.drupalcoder.com/story/718-how-to-define-page-callbacks-that-dont-want-to-render-using-page-template-in-drupal</feedburner:origLink></item>
  </channel>
</rss>
