如图
服务器上crontab一个文件,4个线程处理,文件内是foreach循环一个表的数据的操作,当然脚本文件执行也是非常慢,但是服务器上经常发送死锁,也就是进程跑不动了。求解一下这个原因
死锁的原理,争抢相同的资源,但是使用顺序不同,如图我的线程执行的时间是相隔5分钟执行,但是跑一个线程的是超过7分钟的,是不是这个原因争抢相同的资源,我把时间调成相同时间执行 或者调成相隔10分钟执行就不会争抢资源发送死锁了吧?
望各位老哥们解答
服务器上crontab一个文件,4个线程处理,文件内是foreach循环一个表的数据的操作,当然脚本文件执行也是非常慢,但是服务器上经常发送死锁,也就是进程跑不动了。求解一下这个原因
死锁的原理,争抢相同的资源,但是使用顺序不同,如图我的线程执行的时间是相隔5分钟执行,但是跑一个线程的是超过7分钟的,是不是这个原因争抢相同的资源,我把时间调成相同时间执行 或者调成相隔10分钟执行就不会争抢资源发送死锁了吧?
望各位老哥们解答
//print_r($productList);exit;
if (empty($productList)){
die('没有获取到产品信息');
}$table = "erp_products_data";
$i = 0;
//开始循环来计算吧
foreach ($productList as $pro){
//SKU
$sku = trim($pro['products_sku']);
$warehouse = $pro['product_warehouse_id'];
$id = $pro['products_id']; //计算利润率
$avgProfitRate = $getTotals->getSkuFiveAverage($sku); //计算60天退款次数
$skuMoneybackCount = getSkuMoneybackCount($sku); //计算各仓库的60天销量
$sold_60 = getSalesTotalInSalesRecordMinDays($sku, 60 ,$v['product_warehouse_id']); $data = array();
$data['sold_60'] = $sold_60;
$data['backMoney_60'] = $skuMoneybackCount;
$data['profitRate_15'] = $avgProfitRate; $where = " products_id=".$id;
$doSql->update($table, $data, $where);
if($i>5998){
$end_time = microtime(true);
$ret_time = $end_time - $start_time ;
echo "Code execution time is ".$ret_time." second";
echo 'the end...';
exit;
}
$i++;
}