diff --git a/session_api.install b/session_api.install
index 0947ee6..7a15a99 100644
--- a/session_api.install
+++ b/session_api.install
@@ -31,11 +31,18 @@ function session_api_schema() {
         'length' => 64,
         'not null' => TRUE,
       ),
+      'session_sid' => array(
+        'type' => 'varchar',
+        'length' => 64,
+      ),
     ),
     'primary key' => array('sid'),
     'unique keys' => array(
       'session_id' => array('session_id'),
     ),
+    'indexes' => array(
+      'session_sid' => array('session_sid'),
+    ),
   );
 
   return $schema;
@@ -51,3 +58,16 @@ function session_api_update_6100() {
 
   return $ret;
 }
+
+/**
+ * Add a session sid reference field.
+ */
+function session_api_update_6101() {
+  $ret = array();
+
+  // Add another session id column used to join to the sessions table
+  db_add_field($ret, 'session_api', 'session_sid', array('type' => 'varchar', 'length' => 64, 'not null' => FALSE));
+  db_add_index($ret, 'session_api', 'session_sid', array('session_sid'));
+
+  return $ret;
+}
diff --git a/session_api.module b/session_api.module
index 0878cd3..c39ef0f 100644
--- a/session_api.module
+++ b/session_api.module
@@ -28,7 +28,7 @@ function session_api_get_sid($create = TRUE) {
   if (!session_api_available()) {
     return FALSE;
   }
-  
+
   if (!isset($sid) || !$sid) {
     $sid = FALSE;
 
@@ -37,12 +37,12 @@ function session_api_get_sid($create = TRUE) {
       $session_id = $_COOKIE['session_api_session'];
       $sid = db_result(db_query("SELECT sid FROM {session_api} WHERE session_id = '%s'", array(':session_id' => $session_id)));
     }
-    // If the caller doesn't want to create a new session if it didn't exist, 
+    // If the caller doesn't want to create a new session if it didn't exist,
     // then return here.
     else if (!$create) {
       // Return a negative value here, since it won't collide with any
       // session_api IDs.
-    	return -1;
+      return -1;
     }
     else {
        $session_id = md5(ip_address() . time() . drupal_get_private_key());
@@ -50,11 +50,15 @@ function session_api_get_sid($create = TRUE) {
 
     // For the cookie we use the same domain that Drupal's own session cookie uses.
     $cookie_domain = ini_get('session.cookie_domain');
+    // store the PHP session id if a session exsists
+    $php_session_id = session_id();
+    $php_session_id = !empty($php_session_id) ? $php_session_id : NULL;
     // Update the session timeout.
     if ($sid) {
       $rec = new stdClass;
       $rec->sid = $sid;
       $rec->session_id = $session_id;
+      $rec->session_sid = $php_session_id;
       drupal_write_record('session_api', $rec, 'sid');
       setcookie('session_api_session', $session_id, time() + variable_get('session_api_cookie_expire_time', 2592000), '/', $cookie_domain);
     }
@@ -62,6 +66,7 @@ function session_api_get_sid($create = TRUE) {
     else {
       $rec = new stdClass();
       $rec->session_id = $session_id;
+      $rec->session_sid = $php_session_id;
       drupal_write_record('session_api', $rec);
       $sid = $rec->sid;
 
@@ -93,7 +98,7 @@ function session_api_menu() {
  */
 function session_api_cron() {
   // Fetch list of outdated sids.
-  $result = db_query("SELECT sap.sid FROM {session_api} sap LEFT JOIN {sessions} s ON (sap.session_id = s.sid) WHERE s.sid IS NULL");
+  $result = db_query("SELECT sap.sid FROM {session_api} sap LEFT JOIN {sessions} s ON (sap.session_sid = s.sid) WHERE s.sid IS NULL AND sap.session_sid IS NOT NULL");
   $outdated_sids = array();
   while ($session = db_fetch_object($result)) {
     $outdated_sids[] = $session->sid;
