小编Ete*_*ine的帖子

setcookie()和session_set_cookie_params()函数之间的区别

我试图了解PHP函数setcookie()和session_set_cookie_params()之间的区别。

看起来这两个函数都在执行相同的任务,但是setcookie()可用于创建具有名称和值的cookie。

我试图了解PHP手册,但没有指出明显的区别。

谢谢

php cookies session

6
推荐指数
3
解决办法
6908
查看次数

使用PHP和MySQL ...我如何释放内存?

需求:

我们在两台服务器上有两个相似的表.服务器中的第一个表具有唯一的键列A,B,C,并且我们将Table1行插入到具有唯一键列B,C,D的Table2中.

表1具有大约5百万行,并且由于不同的唯一键列约束,表2将插入大约3百万行.

这里的要求是从Table1获取所有行,如果Table2中没有相同的记录,则插入Table2,如果记录匹配,则增加计数并更新Table2中的'cron_modified_date'列.

对于此设置,PHP版本为5.5,MySQL版本为5.7,而DB服务器具有6 GB RAM.

在执行下面的脚本时,处理2百万条记录并且RAM没有释放后处理速度变得非常慢,并且在某段时间之后所有RAM都被脚本占用并且在该脚本完全没有处理之后.

正如您所看到的,我正在重置变量并关闭数据库连接,但它不会释放数据库服务器RAM.经过一番阅读,我才知道,可能是PHP垃圾收集需要手动调用以释放资源,但它也没有释放RAM.

我在这里做错了什么以及如何使用PHP,MYSQL处理数百万条记录?

在执行脚本时释放RAM的任何其他方法,以便脚本应该执行竞争?

/* Fetch records count for batch insert*/

$queryCount = "SELECT count(*) as totalRecords FROM TABLE1 where created_date > = '2018-02-10'";
$rowsCount = $GLOBALS['db']->execRaw( $queryCount)->fetchAll();

$recordsPerIteration = 50000 ;
$totalCount = $rowsCount[0]['totalRecords']; 
$start = 0;

gc_disable() ;
if ( $totalCount > 0 ) {
    while ( $totalCount > 0 ) {
    $query = "SELECT *  FROM TABLE1
                WHERE where created_date > = '2018-02-10'
                ORDER BY suggestion_id DESC 
                LIMIT ".$start.",".$recordsPerIteration;

    print …
Run Code Online (Sandbox Code Playgroud)

php mysql performance memory-leaks database-performance

5
推荐指数
1
解决办法
1291
查看次数