【问题标题】:CakePHP - every seen this occuring: database session query repeating over and over and overCakePHP - 每次都看到这种情况:数据库会话查询一遍又一遍地重复
【发布时间】:2010-08-16 16:13:53
【问题描述】:

这可能很难阅读,但重要的是一遍又一遍地这样做(重复 14 次):

  1. 选择会话 ID
  2. 统计会话数
  3. 更新会话

16 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 1

17 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

18 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

19 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1

20 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 1

21 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

22 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

23 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

24 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 1

25 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

26 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

27 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

28 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

29 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

30 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

31 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

32 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

33 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

34 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

35 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

36 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

37 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

38 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

39 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

40 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

41 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

42 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

43 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

44选择SessionidSessiondataSessionSession。 /p>

45 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

46 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

47 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 2

48 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

49 删除Session FROM cake_sessions AS Session WHERE Session.expires

50 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

51 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

52 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

53 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 1

54 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

55 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

56 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

57 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

58 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

59 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

60 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

61 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 1

62 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

63 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

64 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

65 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

66 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

67 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

68 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

69 删除Session FROM cake_sessions AS Session WHERE Session.expires

70 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

71 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 1

72 SELECT COUNT(*) AS count FROM cake_sessions AS Session WHERE Session.id = '80f5f4f43334a7bc1446d06d143e6330' 1 1 0

73 UPDATE cake_sessions SET id = '80f5f4f43334a7bc1446d06d143e6330', data = '', expires = 1282010807 WHERE cake_sessions.id = '80f5f4f43334a7bc1446d06d143e6330' 0 1

74 SELECT Session.id, Session.data, Session.expires FROM cake_sessions AS Session WHERE id = '80f5f4f43334a7bc1446d06d143e6330' LIMIT 1 1 1 0

【问题讨论】:

  • 哦,拜托,你希望我们能解决这个问题吗?
  • 我知道。我才意识到读书有多难。现在已经修好了。
  • 没有赞成票,没有接受的答案?不用了。

标签: php cakephp


【解决方案1】:

蛋糕核心中似乎有一个尚未合并的错误。 cake_session 的 _read 和 _write 方法未正确检查 _SESSION 中是否有任何内容。

这个补丁解决了这个问题:

http://github.com/dogmatic69/cakephp1x/commit/1940f80016ff136698e0e49f3097f8b6b29e9659

感谢 dogmatic69

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    相关资源
    最近更新 更多