[Date Prev][Date Next]
Re: How can I lock a record using php-ldap?
Jim C wrote:
I need to be able to lock an attribute, series of entries or one
record and then perform several actions and then unlock the
attribute. How can this be done?
Not being able to do this would constitute a bug because it means that
there will always be problems with race conditions between scripts.
This is easily proveable.
As people have already pointed out, LDAP is not a transactional database
but is rather optimized for search and retrieval. This isn't a bug, it's
a new and unwieldy requirement. I wouldn't expect it in an LDAP
implementation anytime soon (if ever), so you need to consider
addressing it at an application layer. This may be difficult using a
scripting language like PHP, and I definitely don't recommend storing
the highest uidNumber value in the directory database itself.
I've been considering this issue, and will probably be implementing a
solution in my software (LDAPHttp) in the coming months as a "managed"
identifier attribute type. I use Java servlets, not PHP, so I can take
advantage of synchronization and memory residence. I would use a single
process for creating new entries. This process would internally deduce
and store the highest uidNumber (or whatever) in memory. Upon each new
creation, a synchronized block of code would increment the highest
uidNumber and return it, thereby avoiding race conditions.
If there are other perspectives on how to do this, I'd be interested to
hear them. While I don't think LDAP should match the RDBMS model
function for function, managed identifiers would make a nice addition.