codeigniter4 / codeigniter4/CodeIgniter4

Bug: [Memcached] session_start(): Unable to clear session lock record

オープン
#7,604 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug can of worms
主要言語
PHP
スター
6k
フォーク
2k
平均マージ
1日 11時間
マージ済み PR(30日)
73

説明

### PHP Version

8.2

### CodeIgniter4 Version

4.3.2

### CodeIgniter4 Installation Method

Composer (using `codeigniter4/appstarter`)

### Which operating systems have you tested for this bug?

Linux

### Which server did you use?

fpm-fcgi

### Database

Mysql 5.7

### What happened?

I have configured session store as memcached, it was working fine in PHP 7.1 with codeIgniter 2,

After upgrading PHP 7.1 to 8.2 and codeIgniter 2 to 4 I am getting an error on multiple async ajax call

```
session_start(): Unable to clear session lock record
in SYSTEMPATH/Session/Session.php on line 928.
1 [internal function]: CodeIgniter\Debug\Exceptions->errorHandler()
2 SYSTEMPATH/Session/Session.php(928): session_start()
3 SYSTEMPATH/Session/Session.php(250): CodeIgniter\Session\Session->startSession()
4 SYSTEMPATH/Config/Services.php(674): CodeIgniter\Session\Session->start()
5 SYSTEMPATH/Config/BaseService.php(252): CodeIgniter\Config\Services::session()
6 SYSTEMPATH/Config/BaseService.php(193): CodeIgniter\Config\BaseService::__callStatic()
7 SYSTEMPATH/Config/Services.php(641): CodeIgniter\Config\BaseService::getSharedInstance()
8 SYSTEMPATH/Config/BaseService.php(252): CodeIgniter\Config\Services::session()
9 SYSTEMPATH/Common.php(988): CodeIgniter\Config\BaseService::__callStatic()
```

codeIgniter official website also suggests to use session_write_close() for resolving this issue. But this did not work for ajax concurrent call.

### Steps to Reproduce

When I am calling multiple sync ajax than getting error

### Expected Output

Getting Json Response

### Anything else?

_No response_

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

SYSTEMPATH/Session/Session.php の 928 行目から開始し、session_start() を呼び出す startSession() のパスを追跡します。PHP 8.2 上で複数の同時 AJAX リクエストを実行して Memcached を使用した場合の失敗を再現し、期待される JSON レスポンスと動作を比較します。同時リクエストで session lock-record エラーが報告されなくなれば、問題は解決です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
memcached, php
領域
backend
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。